SLF4J-Logback: несколько шаблонов на основе уровня журнала

Логбэк используется, потому что нам нужны некоторые приложения, которые не предоставляются log4j.

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

Для всех остальных уровней журнала следует использовать простой шаблон.

Весь вывод журнала должен быть в одном файле.

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

С log4j2 было найдено несколько указателей, но с логбэком пока не удалось найти решение.

Может кто-нибудь предложить какой-нибудь подход

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
607
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В конфигурации приложения установите prudent на true. Это позволит нескольким добавителям писать в один и тот же файл.

Это решит мою проблему, но я все же не хочу использовать это решение, потому что оно накладывает расходы на производительность.

Mahesh 30.10.2018 09:43

Взрывной ответ от Прасант Наир. В мануале логбэка https://logback.qos.ch/manual/appenders.html вы можете найти

In prudent mode, FileAppender will safely write to the specified file, even in the presence of other FileAppender instances running in different JVMs, potentially running on different hosts. The default value for prudent mode is false.

Вот пример конфигурации:

<configuration>
  <appender name = "FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- Support multiple-JVM writing to the same log file -->
    <prudent>true</prudent>
    <rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level = "DEBUG">
    <appender-ref ref = "FILE" />
  </root>
</configuration>

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