Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Настройка Logback: разделение логов по файлам в Java

Быстрый ответ

Если вы хотите разделять лог-сообщения по разным файлам при использовании Logback, то стоит настроить несколько аппендеров и логгеров в файле logback.xml. Каждый аппендер будет отвечать за запись логов в отдельный файл. Привязывая аппендеры к определённым классам, вы достигнете разделения логов. Вот пример такого конфигурационного файла:

xml
Скопировать код
<configuration>
  
  <appender name="FILE_1" class="ch.qos.logback.core.FileAppender">
    <file>first.log</file>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>
  
  <appender name="FILE_2" class="ch.qos.logback.core.FileAppender">
    <file>second.log</file>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

  <logger name="com.app.First" level="info">
    <appender-ref ref="FILE_1" />
  </logger>

  <logger name="com.app.Second" level="info">
    <appender-ref ref="FILE_2" />
  </logger>

</configuration>

Логи класса com.app.First запишутся в файл first.log, а логи класса com.app.Second — в second.log. Основательно замените "com.app" на имя пакета в вашем приложении.

Кинга Идем в IT: пошаговый план для смены профессии

Избавляемся от дублирования логов с помощью ненаследуемых логгеров

Дублирование файла логов — плохая практика, особенно когда дело касается логов программ. Чтобы избежать попадания системных событий в глобальный логгер, установите атрибут additivity в значение false.

xml
Скопировать код
<logger name="com.app.First" additivity="false"> <!-- Скажем "нет" дублированию! -->
  <appender-ref ref="FILE_1" />
</logger>

Управляем большими объёмами логов с помощью RollingFileAppender

RollingFileAppender — ваш вспомогательный инструмент в управлении большим объемом лог-файлов, предотвращая их нерегулируемое увеличение.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Уровни логирования для настройки вывода информации

Настройте индивидуальные уровни логирования для каждого логгера, чтобы регулировать количество выводимых сообщений.

xml
Скопировать код
<logger name="com.app.debug" level="debug"> <!-- Больше деталей для разработчиков -->
  ...
</logger>
<logger name="com.app.error" level="error"> <!-- Только критические ошибки -->
  ...
</logger>

Визуализация

Допустим, вы работаете в офисе и у вас есть два ящика:

Ящик 1 (🗂 A): Для регулярных отчётов Ящик 2 (🗂 B): Для срочной информации

Ориганизация Logback подобна помощнику (🤖), который тщательно распределяет записи по крайне важным категориям:

properties
Скопировать код
logback.xml

📃 Рядовые сообщения ➡️ 🗂 A
📈 Сообщения об ошибках ➡️ 🗂 B

Адекватное распределение сообщений облегчает поиск необходимой информации.

Конфигурим шаблоны codecs

Дайте логам более изысканный вид, добавив в них временные метки, уровни логирования и названия классов при помощи encoder.

xml
Скопировать код
<encoder>
  <pattern>%d{"HH:mm:ss.SSS"} [%thread] %-5level %logger{36} – %msg%n</pattern> <!-- Больше информации для анализа! -->
</encoder>

Общие логгеры позволяют поддерживать порядок и согласованность

Группируйте классы по тематике и используйте общие логгеры для лучшей организации и поддержания стандартов разработки.

Логирование на уровне класса

Используйте директиву <appender-ref>, чтобы назначить логи конкретному аппендеру и управлять этими логами сразу после их создания.

Давайте логгерам осмысленные имена

Называйте логгеры так, чтобы была понятна их принадлежность к определённой части кода.

Полезные материалы

  1. Глава 3: Конфигурация — Обзор основных концепций настройки Logback.
  2. Глава 4: Аппендеры — Рассмотрение различных типов аппендеров и советы по их использованию.
  3. Глава 7: Фильтры — Продвинутое руководство по управлению логами с помощью фильтров Logback.
  4. FAQ Logback — Ответы на часто задаваемые вопросы по работе с Logback.
  5. Глава 4: Аппендеры – SiftingAppender — Как динамически разделить логи с помощью SiftingAppender.
  6. DZone – Лучшие практики логирования — Зачем соблюдать лучшие практики в области логирования.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как в Logback настроить отделение логов по разным файлам?
1 / 5