log4j2 修改堆栈跟踪格式
log4j2 Modify stacktrace format
是否可以配置 log4j2,使堆栈跟踪不显示源代码,也可能不显示行号?
如果您想知道为什么我想要那个,我需要这个用于单元测试,需要测试异常是否被正确记录。因此,例如,如果 JRE 版本与我复制原始堆栈跟踪的版本不同,则测试失败。因此,如果源代码未包含在堆栈跟踪中,它将更加独立于版本。
示例:
当前来自堆栈跟踪的一行如下所示:
at java.lang.Object.wait(Object.java:502) ~[?:1.8.0_144]
我希望它看起来像这样(但仅适用于 log4j2):
at java.lang.Object.wait(Object.java:502)
甚至可能是这样的:
at java.lang.Object.wait(Object.java)
或更短:
at java.lang.Object.wait
(任何缩短的版本都可以接受。因为目前只有来源(例如 ~[?:1.8.0_144]
与 ~[?:1.8.0_151]
不同。)
更新:
我刚刚在官方文档中找到了这个:https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns 我认为使用 %ex{full}
应该是我想要的。会测试的。
还有其他几种可用格式。
我认为这不可能。堆栈跟踪来自 JVM,log4j 只打印给定的任何内容。
为了达到想要的效果,需要改变模式。
例如,如果它是
... %msg%n
需要
... %msg%n%ex{full}
(阅读 https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns 了解更多信息)
是否可以配置 log4j2,使堆栈跟踪不显示源代码,也可能不显示行号?
如果您想知道为什么我想要那个,我需要这个用于单元测试,需要测试异常是否被正确记录。因此,例如,如果 JRE 版本与我复制原始堆栈跟踪的版本不同,则测试失败。因此,如果源代码未包含在堆栈跟踪中,它将更加独立于版本。
示例:
当前来自堆栈跟踪的一行如下所示:
at java.lang.Object.wait(Object.java:502) ~[?:1.8.0_144]
我希望它看起来像这样(但仅适用于 log4j2):
at java.lang.Object.wait(Object.java:502)
甚至可能是这样的:
at java.lang.Object.wait(Object.java)
或更短:
at java.lang.Object.wait
(任何缩短的版本都可以接受。因为目前只有来源(例如 ~[?:1.8.0_144]
与 ~[?:1.8.0_151]
不同。)
更新:
我刚刚在官方文档中找到了这个:https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns 我认为使用 %ex{full}
应该是我想要的。会测试的。
还有其他几种可用格式。
我认为这不可能。堆栈跟踪来自 JVM,log4j 只打印给定的任何内容。
为了达到想要的效果,需要改变模式。
例如,如果它是
... %msg%n
需要
... %msg%n%ex{full}
(阅读 https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns 了解更多信息)