3

我正在寻找一个 Log4J 布局/格式化程序,它可以帮助我修剪异常中的堆栈跟踪,比默认设置好一点。堆栈执行在 main() 之下的某处是非常明显的,我不需要知道,并且异常发生在其他库的深处,我真的无能为力。

我想要的是一个将堆栈跟踪修剪为的布局,例如我自己代码中方法的最后 5 个方法调用,通过包含 jar 文件、包或其他内容来标识。

有没有沿着这些思路,或者我必须自己写一些魔法?

4

5 回答 5

2

我问了一个类似的问题(关于完全抑制堆栈跟踪一段时间。

不幸的是,没有设置,你需要继承 PatternLayout 来做到这一点。

于 2009-05-07T22:49:57.647 回答
1

logback-classic(log4j 的后继者)中的“ex”或“exception”转换词支持打印指定数量的堆栈跟踪行。“ex”转换词与其余的转换词一起记录。您需要向下滚动一点。

如果您需要有关此主题的更多信息,请联系 logback-user 邮件列表。

于 2009-05-29T13:46:41.620 回答
1

我也尝试寻找它,但没有找到任何令人满意的东西,所以我编写了一个自定义的 ThrowableRenderer 来修剪无关的堆栈帧。我已经开源了代码供其他人使用。查看我的博客文章;你可以在那里找到代码的链接。

于 2012-02-22T09:51:02.227 回答
0

有三种方法可以做到这一点:

  1. 查找其他人所做的库或代码
  2. 自己写(扩展/实现)
  3. 使用默认布局,但在将异常的堆栈传递给记录器之前对其进行修剪
于 2009-05-07T22:15:06.123 回答
0

您可以编写一个具有您需要的特殊逻辑的自定义 Appender。这可能是一个很好的方法。

于 2009-05-07T22:29:23.017 回答