【发布时间】:2009-06-16 17:39:12
【问题描述】:
有没有办法在运行时创建一个 log4j 记录器,它将日志消息收集到缓冲区中?
我目前有一个记录许多事件的类。对于需要监视记录事件的远程应用程序,我只想交换一个记录到缓冲区然后检索缓冲区的记录器,而不是重构类。例如。给出类似的东西:
Class Foo{
Logger log = ....;
public void doSomething(){
log.debug(...
.. actual code
log.debug(...
}
}
//我想用一些外部代码做什么:
String showFooLog(){
Foo f = new Foo();
f.log=new Logger(...
f.doSomething();
return f.log.contents();
}
这可能吗?
编辑:找到了一个更短的解决方案,从 Jared 的帖子中指出(尽管它仍然不是线程安全的)。感谢您的帮助。
Logger l = Logger.getLogger( ... );
StringWriter writer = new StringWriter();
WriterAppender appender = new WriterAppender( new HTMLLayout(), writer );
l.addAppender( appender );
... run code here
writer.flush();
l.removeAppender( appender );
return writer.toString()
【问题讨论】: