如果使用log4j在java中发生错误,是否可以记录任何loglevel?

时间:2016-07-02 04:00:02

标签: java logging log4j

我想知道是否可以使用log4j创建一个logstack,只有在定义的loglevel发生时才会记录。 例如: 我们有大量日志文件,必须记录很多,以了解用户如何得到此错误。 但是,如果发生错误而不是每个用户,我们只需要这些信息。

有没有办法在log4j中处理这个问题而没有自己激活?

1 个答案:

答案 0 :(得分:0)

不幸的是,没有开箱即用的机制可以让你在log4j中创建一个logstack,并且只有在你决定稍后再做(如果发生错误)时才记录它。

但是,你可以通过Filter来实现这样的功能(是的,通过自己活跃)。过滤器可能会在其缓冲区中堆叠消息(它必须是线程本地或使用其他技术将堆栈链接到上下文),直到它检测到必须清除堆栈并启动新堆栈(通过某个标记指示新用户请求)或发生错误,必须将堆栈刷新到日志中。