我有一个用Java编写的web应用程序,并且我有一个线程池。使用log4j在Java中记录一个线程
该应用程序非常庞大,我无法进行重大更改,例如,我无法更改log4j。
我在线程池中执行一个批处理过程,并且我想记录执行该过程的所有内容。
线程池中始终只有一个线程处于活动状态。
任何想法,我该怎么做?
我有一个用Java编写的web应用程序,并且我有一个线程池。使用log4j在Java中记录一个线程
该应用程序非常庞大,我无法进行重大更改,例如,我无法更改log4j。
我在线程池中执行一个批处理过程,并且我想记录执行该过程的所有内容。
线程池中始终只有一个线程处于活动状态。
任何想法,我该怎么做?
我假设这一切都是你所提到的单个线程上执行,并通过一切,我的意思是你的一切感兴趣的
如果你可以改变log4j的配置文件,包括日志格式串线程ID ,那么你可以使用一个工具(例如grep)将日志过滤到该线程。
我有我自己的appender。这是一个Web应用程序,所以还有其他线程,但我只想记录来自批处理线程的所有内容。 – Javier 2010-06-16 22:06:56
我所建议的是,你记录了所有的东西,但是根据批处理过程的线程ID在写入日志之后过滤日志。 – 2010-06-16 23:59:02
我想象你有其他的线程,比如你不想记录的请求线程,并且你想只记录从批处理到专用日志文件的事件。
要将批次中的所有日志写出到日志文件中,您需要在运行时对log4j config进行一些运行时调整。您可以在批处理开始时添加这些更改,并在批处理完成时删除更改 - 静态log4j应用程序配置不会更改,并且运行时log4j配置更改不会影响应用程序的其余部分。
这些都是你做启用日志只是该批次的变化:
这个想法看起来很有趣。我会试试看。谢谢。 – Javier 2010-06-16 22:11:07
我忘了提,当我说“记录所有”我的意思是在错误和信息模式下有预先配置的记录器。我想打印/有/处理调试记录器的调试消息。我创建了我自己的Appender,但它不像我预期的那样工作。 – Javier 2010-06-16 22:08:44