gpt4 book ai didi

java - 如何限制嵌套异常的堆栈跟踪行数

转载 作者:行者123 更新时间:2023-12-04 09:49:01 35 4
gpt4 key购买 nike

让我们有一个包含多个“由”部分引起的异常堆栈跟踪:

my.Exception1: Bad luck
at ...
Caused by: my.Exception2
at ...
Caused by: my.Exception3
at ...
Caused by: my.Exception4
at ...

每个由部分引起的可以跨越多行。有一个JVM参数

-XX:MaxJavaStackTraceDepth

但这会影响整个堆栈跟踪 - 它会切断下面的所有内容,例如 Exception3(最内层的 Exception 将被排除)。我想保留每个“原因”部分,但将每个部分限制为例如 20 行。我知道的一种可能的解决方案是来自 log4j 的 ThrowableRenderer。还有别的吗?目标是在有限的环境(一个日志条目的最大字节数)中尽可能多地保留来自堆栈跟踪的有用信息。

最佳答案

ThrowableRenderer 将是可行的方法。还有 FilteredPatternLayout from openutils-log4j .

粗暴的方法是 get the throwable stacktrace ,过滤掉帧,并重新分配过滤后的 stacktrace for each throwable在记录异常链之前在原因链中。这可以应用于自定义日志过滤器类,但这会稍微改变规则,因为过滤器不应该真正修改可抛出链。这些帧将永远丢失,因此存在风险。

Logback 支持 filtering of stackframes .另见 Filtering the Stack Trace From Hell了解哪些信息值得保留。

关于java - 如何限制嵌套异常的堆栈跟踪行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62044432/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com