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

Путь журналирования при загрузке

log back как установить папку назначения для файлов журнала

Другие вопросы по тегам