1
A
回答
5
您可以實現自己的Appender和使用正常的配置副本上的所有日誌:
log4j.rootLogger=WARN, file, other
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/log.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %p %t %c - %m%n
log4j.appender.other=class.path.of.your.Appender
0
3
也許你的要求是與我相同。我只是寫一個相關的類來實現它。
public class FixedBufferAppender extends AppenderSkeleton {
private LimitTailSizeList ll;
public FixedBufferAppender(PatternLayout layOut, int size) {
this.layout = layOut;
ll = new LimitTailSizeList(size);
}
protected void append(LoggingEvent event) {
String log = this.layout.format(event);
ll.add(log);
}
public String getLatentLog() {
StringBuffer sb = new StringBuffer(100000);
for (Iterator iterator = ll.iterator(); iterator.hasNext();) {
String log = (String) iterator.next();
sb.append(log);
}
return sb.toString();
}
public void close() {
ll.clear();
ll = null;
this.closed = true;
}
public boolean requiresLayout() {
return true;
}
}
public class LimitTailSizeList extends ArrayList {
private int limitSize;
public LimitTailSizeList(int limitSize){
this.limitSize= limitSize;
}
public boolean add(Object o) {
boolean add = super.add(o);
if (size() > limitSize) {
removeRange(0, size() - limitSize);
}
return add;
}
private void initAppender(int maxTailLine) {
fba = new FixedBufferAppender(
new PatternLayout("%d [%X{requestURIWithQueryString}] %-5p -[%t] %m [%c{1}:%M %L] %n"),
maxTailLine);
Logger.getRootLogger().removeAppender("UI_APPENDER");
fba.setName("UI_APPENDER");
fba.setThreshold(org.apache.log4j.Level.DEBUG);
Logger.getRootLogger().addAppender(fba);
}
}
+0
你還可以分享這個配置xml示例嗎? – omega 2013-09-17 15:20:06
相關問題
- 1. 實時從服務器獲取消息
- 2. 修剪Log4J消息
- 3. Java Log4J Logger消息
- 4. 實時消息
- 5. 使用log4j.xml時的log4j警告消息
- 6. Log4j 2.如何獲得log4j的調試消息?
- 7. 從sysout獲取spring消息使用log4j文件
- 8. 如何獲取log4j消息以登錄到Cassandra?
- 9. 使用Retrieve消息獲取實體
- 10. OpenPop.net獲取實際消息文本
- 11. Log4J的不打印消息
- 12. PHP獲取消息
- 13. 獲取WhatsApp消息
- 14. 獲取Twitter消息
- 15. 獲取Gmail消息
- 16. iphone消息中心 - 如何獲取消息到達時間
- 17. 在觸發時獲取信標消息
- 18. 獲取c2dm的消息時出錯
- 19. 獲取消息的適當時間
- 20. C#WPF實時UDP消息
- 21. 實時推送消息
- 22. Android實時消息傳遞
- 23. 獲取實時通話信息
- 24. 從/ dev/input獲取實時信息
- 25. 從GCM消息獲取ID
- 26. 從DB獲取消息
- 27. 獲取當前消息框
- 28. 從SubscriptionClient獲取消息數
- 29. 從postgres獲取消息
- 30. SQS:獲取消息可用
這會將日誌重定向到我的課程嗎?我需要訪問當前正在打印到現有日誌文件的日誌消息。 – Josh 2011-04-05 09:53:45
是的。爲了增加魅力,你可以像任何其他appender一樣使用它。意思是說,你可以只使用配置來控制日誌,你的班級應該得到這個日誌。 (例如,只有WARN及以上,或只有特定的軟件包)。 – nfechner 2011-04-05 09:56:06
謝謝nfechner。太棒了。 – Josh 2011-04-05 10:10:59