完成线程后,Log4j会附加到日志文件中

时间:2017-01-11 13:16:28

标签: java multithreading logging log4j

我正在研究一次处理多个请求的java服务。我在没有任何额外配置的情况下使用log4j。因此基本上所有日志都会转到同一个文件,因此很难调试有关特定请求的任何问题。

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

那么为了实现这一点应该做些什么。

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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