Я новичок в 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)
PS: я пытался изменить ведение журнала корневого уровня: <root level="ERROR">
, но проблема все еще сохраняется, я не вижу исключения вфайл журнала.