spring-boot создает файл logging.path_IS_UNDEFINED.log
Мое приложение весенней загрузки создает файл журнала с именем logging.path_IS_UNDEFINEDlogging.file_IS_UNDEFINED.log
в котором четко говорится, что logging.path
а также logging.file
свойства не установлены, пока logback инициализирует конфигурацию журнала. Это звучит как дубликат этого Однако я попробовал все предложенные решения из этого поста. Я использую Spring-Boot версии 2.0
Приложение-dev.yaml
spring:
main:
allow-bean-definition-overriding: true
application:
name: my-application
logging:
path: /var/logs/${spring.application.name}/
file:
max-size: 10MB
max-history: 5
весна-logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
<property name="logging.pattern.console" value="%d{HH:mm:ss.SSS} [%t] %-5level %X{transactionId} %logger{36} - %msg%n"/>
<property name="logging.file.roll-pattern" value="application-%d{yyyy-MM-dd}-%i.log"/>
<springProfile name="dev">
<property resource="application-dev.yaml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<logger name="org.springframework" level="INFO"/>
<logger name="com.myapp" level="DEBUG"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logging.path}${logging.file}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${logging.path}${logging.file}.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</springProfile>
</Configuration>
3 ответа
В качестве альтернативы вы можете установить переменную "path" в вашем logback.xml и добавить к ней ваше имя файла, чтобы сохранить его в другом свойстве "LOG_FILE":
<springProperty scope="context" name="path"
source="logging.path" />
<property name="LOG_FILE"
value="${path}/myapp.log" />
С новым годом всех! Итак, я столкнулся с аналогичной проблемой, когда обновил версию весенней загрузки (2.4.1) и начал получать ошибку LOG_PATH_IS_UNDEFINED.
Я провел небольшое исследование и предполагаю, что есть проблема с отображением свойств из logging.path в LOG_PATH. (Я вручную отлаживал регистратор, и свойства загружались)
Мое решение/патч:
Я добавил ручное сопоставление с logback-spring.xml в самом верху:
<springProperty scope="context" name="LOG_PATH" source="logging.path"/>
Теперь он у меня работает...
logging.path, который вы инициализировали в application-dev.yaml, установите переменную ${LOG_PATH} в spring-logback.xml.
если вы инициализируете переменную logging.file, вы можете использовать переменную ${LOG_FILE} в spring-logback.xml, поэтому вам следует выполнить инициализацию, как показано ниже.
logging:
file: /var/logs/myApp.log
и установите переменную в spring-logback.xml
<property name="LOG_FILE" value="${LOG_FILE}"/>
<file>${LOG_FILE}</file>