Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 混合使用不同日志文件的log4j_Java_Multithreading_Logging_Log4j - Fatal编程技术网

Java 混合使用不同日志文件的log4j

Java 混合使用不同日志文件的log4j,java,multithreading,logging,log4j,Java,Multithreading,Logging,Log4j,亲爱的 目前我正在运行一个web应用程序,它使用log4j进行日志记录。我的应用程序使用多线程概念,如果按顺序启动线程,我的log4j工作正常 如果我开始多任务处理,那么第一个线程日志将被记录到第二个任务线程,反之亦然。因此,日志被混淆了 在调用每个类的另一个方法时,我只是将appender作为参数传递。根据需要,我在每节课中都会按如下方式调用appender private FileAppender appender = new FileAppender(); log.addAppender(

亲爱的

目前我正在运行一个web应用程序,它使用log4j进行日志记录。我的应用程序使用多线程概念,如果按顺序启动线程,我的log4j工作正常

如果我开始多任务处理,那么第一个线程日志将被记录到第二个任务线程,反之亦然。因此,日志被混淆了

在调用每个类的另一个方法时,我只是将appender作为参数传递。根据需要,我在每节课中都会按如下方式调用appender

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);}