如何仅在log4j中从当前线程获取日志

时间:2014-08-20 11:14:37

标签: java multithreading logging log4j

我想在一段时间内截取我的应用程序中特定线程的日志。我正在使用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()在这里不是一个好的解决方案,但我没有任何其他想法。

1 个答案:

答案 0 :(得分:0)

您可以使用MDC.put.

例如

MDC.put("threadName",Thread.currentThread().getName());

使用它可以放置线程名称。

使用Log4j appender,您可以在日志中打印线程名称[%X {threadName}