【发布时间】:2014-08-20 11:14:36
【问题描述】:
我想在我的应用程序中截取特定线程的日志一段时间。我正在使用 log4j。 下面的代码可以做到这一点,但我也从其他线程获取日志。
WriterAppender appender = new WriterAppender(new PatternLayout("%d{ISO8601} %p - %m%n"), consoleWriter);
appender.setName("STR_APPENDER");
appender.setThreshold(org.apache.log4j.Level.INFO);
Logger.getRootLogger().addAppender(appender);
//Some Logic here (I'm using other classes and jars here and I want to get this logs as well)
Logger.getRootLogger().removeAppender("STR_APPENDER");
我知道 Logger.getRootLogger() 在这里不是一个好的解决方案,但我没有任何其他想法。
【问题讨论】:
-
您可以使用自己的附加程序(也许只是一个包装器)并检查调用它的线程。你会告诉 appender 哪些线程的消息要转发,例如通过将线程或其 id 传递给 appender 的构造函数。
-
托马斯好主意,谢谢!
标签: java multithreading logging log4j