Как разделить ведение журнала по серьезности для разных файлов, используя springboot и logback - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь отправить разные журналы в разные файлы, используя logback.

У меня настроено 2 приложения (Console, RollingFile), и я хочу все

  • Сообщения INFO -> Консоль appender
  • Сообщения TRACE -> Приложение RollingFile:

Logback-spring.xml

<root level="error">
    <appender-ref ref="RollingFile" />
    <appender-ref ref="Console" />
</root>

<logger name="com.mypkg" level="trace" additivity="true">
    <appender-ref ref="RollingFile" />
</logger>

<logger name="com.mypkg" level="info" additivity="true">
    <appender-ref ref="Console" />
</logger>

В результате вышеуказанной конфигурации возникли 2 проблемы:

  • все сообщения дублируются (оба дополнения)
  • com.mypkg показывает только INFO (не TRACE) для обоих приложений

есть идеи, что я делаю не так? существует ли какой-либо файл журнала возврата по умолчанию, который каким-то образом сливается с этим конфигом во время выполнения (изменение аддитивности на ложное исправляет проблему дублирования, но сообщения TRACE все еще отсутствуют)

Спасибо.

1 Ответ

2 голосов
/ 03 апреля 2019

Вы можете попробовать фильтры возврата.Существует фильтр под названием LevelFilter.Опция принимать и игнорировать типы уровней журнала также доступна здесь.

Пример:

<configuration>
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
      <pattern>
        %-4relative [%thread] %-5level %logger{30} - %msg%n
      </pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="CONSOLE" />
  </root>
</configuration>

Дополнительная информация приведена в документации по журналу ниже.

https://logback.qos.ch/manual/filters.html#levelFilter

...