作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我只想在我的程序中记录前几行异常。我知道,我可以这样做来只打印堆栈跟踪的前 5 行:
Throwable e = ...;
StackTraceElement[] stack = e.getStackTrace();
int maxLines = (stack.length > 4) ? 5 : stack.length;
for (int n = 0; n < maxLines; n++) {
System.err.println(stack[n].toString());
}
但我宁愿使用 log4j(或者更准确地说是 slf4j 而不是 log4j)进行日志记录。有没有办法告诉 log4j 它应该只打印堆栈跟踪的前 5 行?
最佳答案
您可以在 log4j 中使用 EnhancedPatternLayout 来格式化您的堆栈跟踪。
见 http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/EnhancedPatternLayout.html ,特别是模式表中关于“可 throw ”模式的部分。
请注意,对 %throwable{n}
的支持是相当新的,至少需要 log4j 1.2.16(这是撰写本文时的最新版本)
出于跟踪目的,这是处理其实现的票证: https://issues.apache.org/bugzilla/show_bug.cgi?id=48902
关于java - Log4j 格式化 : Is it possible to truncate stacktraces?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263741/
我是一名优秀的程序员,十分优秀!