我想知道是否可以使用log4j创建一个logstack,只有在定义的loglevel发生时才会记录。 例如: 我们有大量日志文件,必须记录很多,以了解用户如何得到此错误。 但是,如果发生错误而不是每个用户,我们只需要这些信息。
有没有办法在log4j中处理这个问题而没有自己激活?
答案 0 :(得分:0)
不幸的是,没有开箱即用的机制可以让你在log4j中创建一个logstack,并且只有在你决定稍后再做(如果发生错误)时才记录它。
但是,你可以通过Filter
来实现这样的功能(是的,通过自己活跃)。过滤器可能会在其缓冲区中堆叠消息(它必须是线程本地或使用其他技术将堆栈链接到上下文),直到它检测到必须清除堆栈并启动新堆栈(通过某个标记指示新用户请求)或发生错误,必须将堆栈刷新到日志中。