logback-spring.xml запись в файл при использовании org/springframework/boot/logging/logback/base.xml

#spring-boot #logback #spring-logback

#весенняя загрузка #возврат в систему #spring-logback

Вопрос:

Я создал тестовый проект с Spring Boot, чтобы узнать об использовании logback-spring.xml файл. Я хочу использовать настройку Spring по умолчанию для записи в консоль, поэтому я использую следующую строку

 <include resource="org/springframework/boot/logging/logback/base.xml" />
  

И я также хочу регистрироваться в файле на постоянной основе и сохранять максимальное количество файлов журнала в системе. Запись в консоль работает как ожидалось. Однако журналы не записываются в файл журнала. Создается папка с именем «logs» и файл «logfile.также создается журнал». Но в него ничего не записывается.

Ниже приведена заливка logback-spring.xml файл

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

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <property name="LOG_PATH" value="logs" />
    <property name="LOG_ARCHIVE" value="${LOG_PATH}/archive" />

    <appender name="File-Appender" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_PATH}/logfile.log</file>
        <encoder>
            <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n</pattern>
            <outputPatternAsHeader>false</outputPatternAsHeader>
        </encoder>
    </appender>

    <logger name="test" level="DEBUG" />
</configuration>
  

и ниже приведено тестовое приложение.java-файл, который является частью test пакета

 @SpringBootApplication
public class TestApplication {

    private static final Logger logger = LoggerFactory.getLogger(TestApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
        logger.trace("Trace Message!");
        logger.debug("Debug Message!");
        logger.info("Info Message!");
        logger.warn("Warn Message!");
        logger.error("Error Message!");
    }

}
  

Почему ничего не записывается в файл?

Ответ №1:

Я думаю, что есть несколько проблем.

Сначала удалите строку <logger name="test" level="DEBUG" /> . Это настраивает регистратор для классов в пакете test , но не определяет приложение, поэтому ничего не регистрируется.

Как только это исчезнет, добавьте

 <root level="DEBUG">
    <appender-ref ref="File-Appender"/>
</root>
  

Это настроит корневой регистратор (который наследуют все регистраторы) на уровне отладки и для вывода всех журналов в File-Appender .

Кроме того, я не могу вспомнить, создает ли logback отсутствующие каталоги, поэтому вам может потребоваться убедиться, что logs каталог существует перед запуском приложения.