繁体   English   中英

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

[英]How to get logs from current thread only in 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()在这里不是很好的解决方案,但我没有其他想法。

您可以使用MDC.put.

例如

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM