Почему Java Spring boot logback не регистрирует исключения - PullRequest
0 голосов
/ 24 сентября 2018

Я новичок в 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">, но проблема все еще сохраняется, я не вижу исключения вфайл журнала.

1 Ответ

0 голосов
/ 24 сентября 2018

1.Вы должны использовать slf4j + logback , похоже, вы используете ведение журнала java util 2. попробуйте перехватить исключение и зарегистрировать ошибку, в противном случае при входе в систему не удастся поймать исключение

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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...