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,我正在开发一个java服务,它一次处理多个请求。我使用log4j,没有任何额外的配置。因此,基本上所有日志都将进入同一个文件,因此很难调试与特定请求相关的任何问题 我仍然希望所有日志都在同一个文件中(我将使用DailRollingFileAppender使我的生活更轻松),但我希望日志的方式是,一个线程中的所有日志都应该一次追加。通过这种安排,我可以在一个地方找到请求的日志 那么,为了实现这一目标,应该做些什么呢 感谢Log4J允许输出到日志文件的消息具有特定模式,并且通常作为Log4J.xml

我正在开发一个java服务,它一次处理多个请求。我使用log4j,没有任何额外的配置。因此,基本上所有日志都将进入同一个文件,因此很难调试与特定请求相关的任何问题

我仍然希望所有日志都在同一个文件中(我将使用DailRollingFileAppender使我的生活更轻松),但我希望日志的方式是,一个线程中的所有日志都应该一次追加。通过这种安排,我可以在一个地方找到请求的日志

那么,为了实现这一目标,应该做些什么呢


感谢

Log4J允许输出到日志文件的消息具有特定模式,并且通常作为Log4J.xml(或.properties)文件的一部分提供

使用消息模式,我们可以将线程名称输出到日志文件。这是通过在消息模式中添加%t来完成的

但是我不确定Log4J是否会被设计为在一个地方转储一个线程的所有日志。这是因为在web应用程序中,服务器运行的线程持续时间很长。因此,处理用户1的请求的同一个服务器线程可能正在为用户2的请求提供服务。因此,如果您假设每个请求都会生成一个线程,恐怕情况并非如此

但是,对于不同的应用程序模块,可以在log4j.xml中使用不同的appender和logger,这样就可以在一个地方找到某些重要模块的日志