我想在程序中只記錄例外的前幾行。我知道,我可以做這樣的事情只打印前5行堆棧跟蹤的:Log4j格式化:是否可以截斷堆棧跟蹤?
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它應該只打印stacktrace的前5行?
精彩,拋出%{5}不正是我所需要的。 – rompetroll 2010-07-16 10:55:28
請注意,在嵌套異常的情況下,這將無條件地切斷嵌套消息,因此對於許多現實世界的用例而言,這是毫無用處的。開發人員需要的是限制跟蹤中每個異常的堆棧元素數量。 – tkruse 2016-11-07 07:29:06