Java 混合使用不同日志文件的log4j
亲爱的 目前我正在运行一个web应用程序,它使用log4j进行日志记录。我的应用程序使用多线程概念,如果按顺序启动线程,我的log4j工作正常 如果我开始多任务处理,那么第一个线程日志将被记录到第二个任务线程,反之亦然。因此,日志被混淆了 在调用每个类的另一个方法时,我只是将appender作为参数传递。根据需要,我在每节课中都会按如下方式调用appenderJava 混合使用不同日志文件的log4j,java,multithreading,logging,log4j,Java,Multithreading,Logging,Log4j,亲爱的 目前我正在运行一个web应用程序,它使用log4j进行日志记录。我的应用程序使用多线程概念,如果按顺序启动线程,我的log4j工作正常 如果我开始多任务处理,那么第一个线程日志将被记录到第二个任务线程,反之亦然。因此,日志被混淆了 在调用每个类的另一个方法时,我只是将appender作为参数传递。根据需要,我在每节课中都会按如下方式调用appender private FileAppender appender = new FileAppender(); log.addAppender(
private FileAppender appender = new FileAppender();
log.addAppender(appender);
如何根据并行启动的任务区分appender日志文件
谢谢据我所知,您需要将记录的字符串与线程原点匹配。 可以使用嵌套的诊断上下文(请参见 ,及
.为了理解我调用的每个类,您应该显示一些代码,`Logger log=Logger.getLogger(classname.class);FileAppender appender=newfileappender()`因此实例是静态的,日志是混合的,appender最好在
log4j.properties
文件中配置。这样,一个记录器可能会有许多孤立的appender(如果不调用removeAppender
)。无论如何,我建议同步将appender添加到记录器:synchronized(log){log.addAppender(appender);}