logback как установить папку назначения для файлов журнала
Есть ли способ установить одну папку назначения, чтобы я мог указать, где должны быть созданы все файлы журналов, вместо того, чтобы настраивать ее для каждого приложения?
2 ответа
Вы можете определить свойство в файле конфигурации logback и использовать его, как показано ниже
<configuration>
<property name="USER_HOME" value="/home/sebastien" />
<appender name="SPRING_LOGS" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/spring.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
Обратите внимание, что logback может считывать переменные из системных свойств или отдельного файла свойств. Следуйте инструкциям для более подробной информации.
Я потратил много времени на настройку Logback для работы со Spring Boot, и я хотел бы поделиться своей конфигурацией, надеясь избавить других людей от напрасной траты времени.
Мой пример похож на пример Энди Дюфренна с одним ключевым отличием - нет <property>
тег. Это было действительно важно в моем случае, потому что если вы включите <property name="logs_dir" value="." />
вы не сможете переопределить его, используя системные свойства, что я хотел сделать следующим образом:
java -jar -Dlogs_dir=~/newLogsDir yourApp.jar
Также обратите внимание, что значение по умолчанию установлено внутри переменной пути - ${logs_dir:-.}
, Надеюсь это поможет:
<?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>%-20(%d{yyyy-MM-dd HH:mm:ss} %highlight([%-5level])) %msg%n</pattern>
</encoder>
</appender>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs_dir:-.}/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover monthly -->
<fileNamePattern>system-%d{yyyy-MM}.log.zip</fileNamePattern>
<maxHistory>12</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-26(%d [%-5level]) %logger{35} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
У меня есть приложение весенней загрузки, и я запускаю жир .jar
как системный сервис.
Я пару часов пытался установить LOG_PATH относительно домашнего каталога пользователя.
вот что сработало для меня:
- в
application.properites
У меня есть:
logging.path=${HOME}/attach_logs
- в
logback-spring.xml
У меня есть:
<springProperty scope="context" name="LOG_PATH" source="logging.path"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/console.log</file>
Рекомендации:
Получение домашнего пути пользователя в application.properties в Spring Boot
Доступ к свойствам приложения в log back.xml