Spring boot не загружает logback-spring.xml - PullRequest
0 голосов
/ 29 мая 2018

У меня есть пример приложения Spring Boot, которое использует Logback для регистрации.Поэтому у меня есть logback-spring.xml рядом с флягой для настройки ведения журнала, однако она не будет работать, если я не укажу ее с помощью logging.config, например: logging.config=logback-spring.xml.

Я изучил Spring Bootигнорирование logback-spring.xml , где предполагается, что это может быть, потому что где-то уже есть spring.xml, но установка точки останова на org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile) показывает, что logFile пуст.

Я что-то здесь не так делаю

Ответы [ 5 ]

0 голосов
/ 06 июня 2018

Согласно описанию проблемы, вы используете внешнюю версию конфигурации вашего журнала.Файл хранится вне банки.Таким образом, вы должны упомянуть путь в качестве аргумента времени выполнения, как показано ниже:

-Dlogging.config=file:logback-spring.xml

Или упомянуть то же свойство в application.properties, как показано ниже:

logging.config=file:logback-spring.xml

Причина его полученияфайл из папки ресурсов, потому что он настроен весной таким образом.Spring выбирает файл журнала по именам, указанным ниже в classpath.

logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy

Пожалуйста, проверьте соответствующие документы в Настраиваемая конфигурация подпружиненного журнала

0 голосов
/ 04 июня 2018

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

Ниже приводится содержимое файла журнала:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <property name="LOGDIR" value="logs"></property>
    <property name="APP_NAME" value="spring-boot-sample"></property>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d ${APP_NAME} %-5level [%thread] %logger: %msg%n</Pattern>
        </layout>
    </appender>

    <appender name="ROLLINGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOGDIR}/${APP_NAME}-log.%d{MM-dd-yyyy}.log</fileNamePattern>
            <maxHistory>90</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <Pattern>%d ${APP_NAME} %-5level [%thread] %logger: %msg%n</Pattern>
        </encoder>
    </appender>

    <springProfile name="local">
        <root level="debug">
            <appender-ref ref="CONSOLE"/>
        </root>
        <logger name="co.jp.oha" additivity="false" level="debug">
            <appender-ref ref="ROLLINGFILE"/>
            <appender-ref ref="STDOUT"/>
        </logger>
    </springProfile>
</configuration>

Вы можете попробовать с ними.Я надеюсь, что это поможет вам.

0 голосов
/ 04 июня 2018

Просто определите эти строки в вашем logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.web" level="DEBUG"/>
</configuration>
0 голосов
/ 04 июня 2018

По умолчанию Spring не ищет ресурсы вне файла jar.Если вы хотите использовать внешний файл конфигурации logback, вы должны указать его местоположение при запуске jar:

$ java -jar -Dlogback.configurationFile=/full_path/logback.xml app.jar

Пожалуйста, не включайте logback.xml в окончательный файл Jar, это вызовет многократный входXML-файлы в пути к классам.

0 голосов
/ 01 июня 2018

Причин такого поведения может быть две:

Причина 1: Файл logback-spring.xml как-то отсутствует в пути к классам.Вы можете проверить это во время выполнения, напечатав System.getProperty("java.class.path") и проверив, присутствует ли в выводе папка, содержащая logback-spring.xml.

Причина 2 : Если причина 1 не является проблемой, то уже есть файл с именем logback.xml или logback-spring.xml в пути к классам, и это может вызвать конфликт.Теперь здесь вы должны найти этот файл.Вы можете попробовать переименовать logback-spring.xml в logback.xml и проверить поведение.

...