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