java - 如何启用 log-back 日志堆栈跟踪 og 未捕获的异常
问题描述
我对重新登录非常陌生,并想尝试在我的应用程序中使用它。我尝试将其配置如下:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/file/log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>/rotated/log.log.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>30</maxHistory>
<totalSizeCap>16GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
当我编写一个简单的应用程序时,我遇到了一个问题,即未记录异常的堆栈跟踪:
public static void main(String[] args){
logger.info("Test")
logger.error("TEST!")
throw new IllegalArgumentException("Exception")
}
我在日志文件中的内容是:
16:57:05.905 [main] INFO com.App - Test
16:57:05.907 [main] ERROR com.App - TEST!
如何配置未捕获异常的日志堆栈跟踪?
解决方案
我认为您根本无法在 main() 方法之外记录未捕获的异常。但是你可以做的是在你的主要方法中使用“catch all”块:
public static void main(String[] args){
try
{
logger.info("Test");
logger.error("TEST!");
someMethodThatPropablyThrowsAnException();
throw new IllegalArgumentException("Exception");
}
catch (Exception exception)
{
logger.error(exception);
}
}
这应该记录您的代码中引发的任何尚未处理的异常。
推荐阅读
- protractor - 量角器浏览器从 multiCapabilities 中选择
- python - 在 Python 中安装 java 包时出错
- python - 查找所有组合,通过消除一个 ar 直到列表为空,以及在 python 3 中处理列表的最佳数据结构是什么?
- php - 使用 PHP 在特定 XML 节点读取特定数组的值
- javascript - 在不同的突变中使用相同对象的输入类型
- java - Java将负浮点数转换为字节数组
- database - Android Studio:创建了数据库,但没有表
- bash - 如何识别启动 Finder 执行的 .command 脚本的符号链接?
- kubernetes - 为什么实际 CPU 利用率百分比超过 Kubernetes 中的 Pod CPU 限制
- websocket - HaProxy 负载平衡 websocket