如何在Java Web项目中基于每个会话使log4j日志记录到不同的文件?

时间:2011-02-11 10:17:34

标签: java servlets log4j

我正在尝试调试客户端网站上发生的问题,它只发生在客户端网站上,因此我无法在我们的实验室环境中对其进行测试,但客户端始终在使用该系统所以日志文件中的数据量是巨大的。此外,如果我将日志记录切换到Debug,那么点击单个文件的大量日志写入会使服务器瘫痪。

如何让我的应用程序将每个http会话记录到不同的日志文件?为了减轻文件拥塞并使日志文件更具可读性?

1 个答案:

答案 0 :(得分:2)

在顺序写入/读取时,磁盘往往表现最佳。写入多个文件而不是一个文件对于磁盘来说是更多的工作,因为它必须在文件之间跳转。出于性能原因,我不建议使用多个文件。但是,能够调试有限数量的会话可能很有用。

您可以通过将会话的ID包含在该会话的记录器名称中,为每个会话创建一个记录器。然后,可以将每个会话记录到不同日志级别的其他文件中。

但是,您可能会发现,对于此级别的控制,您希望自己写入文件并更密切地控制其行为。例如写入GZIP文件可能会大大减少IO。