我正在寻找一个 Log4J 布局/格式化程序,它可以帮助我修剪异常中的堆栈跟踪,比默认设置好一点。堆栈执行在 main() 之下的某处是非常明显的,我不需要知道,并且异常发生在其他库的深处,我真的无能为力。
我想要的是一个将堆栈跟踪修剪为的布局,例如我自己代码中方法的最后 5 个方法调用,通过包含 jar 文件、包或其他内容来标识。
有没有沿着这些思路,或者我必须自己写一些魔法?
我问了一个类似的问题(关于完全抑制堆栈跟踪一段时间。
不幸的是,没有设置,你需要继承 PatternLayout 来做到这一点。
logback-classic(log4j 的后继者)中的“ex”或“exception”转换词支持打印指定数量的堆栈跟踪行。“ex”转换词与其余的转换词一起记录。您需要向下滚动一点。
如果您需要有关此主题的更多信息,请联系 logback-user 邮件列表。
我也尝试寻找它,但没有找到任何令人满意的东西,所以我编写了一个自定义的 ThrowableRenderer 来修剪无关的堆栈帧。我已经开源了代码供其他人使用。查看我的博客文章;你可以在那里找到代码的链接。
有三种方法可以做到这一点:
您可以编写一个具有您需要的特殊逻辑的自定义 Appender。这可能是一个很好的方法。