【发布时间】:2009-03-27 16:21:41
【问题描述】:
我有一个使用 log4j RollingFileAppender 将日志信息转储到文件中的 Web 应用程序。该应用程序当前配置为仅转储 WARN 和更高的日志信息,以便磁盘 I/O 不会影响服务器的性能。
但是,我想知道发生错误时的最后一次 X 调试信息。有没有办法将 log4j 配置为在文件中转储最后 25 行调试信息以及错误?
我认为这可以使用自定义附加程序来完成。我尝试搜索示例但找不到。
【问题讨论】:
我有一个使用 log4j RollingFileAppender 将日志信息转储到文件中的 Web 应用程序。该应用程序当前配置为仅转储 WARN 和更高的日志信息,以便磁盘 I/O 不会影响服务器的性能。
但是,我想知道发生错误时的最后一次 X 调试信息。有没有办法将 log4j 配置为在文件中转储最后 25 行调试信息以及错误?
我认为这可以使用自定义附加程序来完成。我尝试搜索示例但找不到。
【问题讨论】:
我认为自己编写是要走的路。你能实现Appender 并将每次调用委托给底层的 RollingFileAppender 吗?
在您的实现中,只需存储最新的“n”条日志消息,并写入滚动文件附加程序。如果遇到错误消息,则将存储的调试消息转储到滚动文件附加程序。
【讨论】:
是的,我知道的唯一方法是写你自己的Appender。要么扩展RollingFileAppender,要么写一个Appender,委托给RollingFileAppender。在您的新Appender 中,保留最后 N 个日志记录事件的历史记录,当某些内容以 ERROR 级别记录时,转储您的日志记录事件历史记录。我自己开始实现类似的东西,但从未完成。
【讨论】: