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 了解更多信息)