gpt4 book ai didi

java - 为什么Java spring boot logback不记录异常

转载 作者:行者123 更新时间:2023-12-02 03:30:05 28 4
gpt4 key购买 nike

我是 Spring Boot 新手,我刚刚设置了 logback 将日志写入自定义日志文件。一切正常,我已成功将自定义日志消息写入文件,但是当引发异常时,错误并且堆栈跟踪不会写入文件。

src/main/resources/logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>

<timestamp key="timestamp" datePattern="yyyy-MM-dd"/>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app-${timestamp}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- retain 30 days logs -->
<maxHistory>30</maxHistory>
</rollingPolicy>

<encoder>
<pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
</encoder>
</appender>

<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>

src/main/resources/application.properties

logging.config=classpath:logback.xml

主类:

@SpringBootApplication
public class DemoApplication {

private static final Logger logger = Logger.getLogger("DEMO");

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);

logger.log(Level.INFO, "main called");

throw new IllegalArgumentException("This is a test");
}
}

以及不在日志文件中的堆栈跟踪:

Exception in thread "main" java.lang.IllegalArgumentException: This is a test
00:06:54.179 [main] ERROR DEMO - This is an error
at com.demo.DemoApplication.main(DemoApplication.java:18)

P.S:我尝试更改根级别日志记录:<root level="ERROR">但问题仍然存在,我在日志文件中看不到异常。

最佳答案

1.你必须使用slf4j + logback,看来你正在使用java utillogging2. try catch异常并记录错误,否则logback无法捕获异常

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class DemoApplication {

private static final Logger logger = LoggerFactory.getLogger("DEMO");

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);

logger.info("main called");
try {
throw new IllegalArgumentException("This is a test");
} catch(Exception e) {
logger.error("", e);
}
}
}

关于java - 为什么Java spring boot logback不记录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470332/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com