log4j2修改堆栈跟踪格式



是否可以以这样的方式配置log4j2,即堆栈不显示源代码,也可能不显示行号
如果你想知道我为什么要这样做,我需要这个用于单元测试,需要测试异常是否被正确记录。因此,例如,如果JRE版本与我从测试中复制的原始stacktrace版本不同,那么测试就会失败。因此,如果源代码没有包含在stacktrace中,那么它将是一个更加独立的版本。

示例:

目前堆栈中的一行如下:

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}应该是我想要的。将测试它。

还有其他几种可用的格式。

为了达到想要的效果,需要改变模式。

例如,如果是

... %msg%n

它需要

... %msg%n%ex{full}

(阅读https://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns了解更多信息)

我认为这是不可能的。stacktrace来自JVM,log4j只打印给定的内容。

最新更新