【问题标题】:How to enable log-back log stack trace og uncaught exceptions如何启用 log-back 日志堆栈跟踪 og 未捕获的异常
【发布时间】:2018-11-25 09:35:46
【问题描述】:

我对重新登录非常陌生,想尝试在我的应用中使用它。我尝试如下配置:

<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!

如何配置未捕获异常的日志堆栈跟踪?

【问题讨论】:

    标签: java exception logging logback


    【解决方案1】:

    我认为您根本无法在 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);
        }
    }
    

    这应该记录您的代码中引发的任何尚未处理的异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-20
      • 2021-03-18
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      相关资源
      最近更新 更多