如何在自定义Logback Appender中通过ILoggingEvent获取全部内部异常
Logback自定义Appender获取全量嵌套异常解决方案
实现逻辑
Logback提供的IThrowableProxy接口内置getCause()方法,可获取下一层级的嵌套异常代理对象,循环调用该方法直到返回null即可遍历所有层级的异常。
示例代码
@Override protected void append(ILoggingEvent event) { IThrowableProxy throwable = event.getThrowableProxy(); // 从最外层异常开始逐层遍历 while (throwable != null) { // 输出当前层级异常的类名与错误信息 System.out.println(throwable.getClassName() + ": " + throwable.getMessage()); // 切换到下一层嵌套异常 throwable = throwable.getCause(); } }
输出效果
上述代码执行后会按从外到内的顺序输出所有嵌套异常:
java.lang.Exception: First Exception java.lang.Exception: Second Exception java.lang.Exception: Third Exception
扩展说明
如果需要同时获取异常的栈轨迹信息,可调用IThrowableProxy的getStackTraceElementProxyArray()方法,获取当前层级异常对应的栈帧代理数组。
内容的提问来源于stack exchange,提问作者psittacus
相关产品推荐
相关产品推荐

