Настройка log4j: вывод логов конкретного класса в файл

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

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

Для перенаправления логов конкретного класса в отдельный файл с помощью log4j нужно настроить логгер с полным наименованием класса и связать его с указанным файлом. Для примера что это может выглядеть так в файле log4j.properties:

properties
Скопировать код
# В log4j Appenders выполняют функцию доставки ваших логов.
log4j.appender.CUSTOM=org.apache.log4j.FileAppender
log4j.appender.CUSTOM.File=particular.log

# Логгер контролирует логи вашего класса аналогично тому, как Бэтмен следит за Готэмом.
log4j.logger.com.yoursite.YourClass=INFO, CUSTOM

# Логгер не должен отображать повторяющиеся сообщения, поэтому стоит отключить additivity.
log4j.additivity.com.yoursite.YourClass=false

Здесь CUSTOM — это название вашего Appender'а, com.yoursite.YourClass — полное имя целевого класса. В итоге логи из YourClass будут записываться только в файл particular.log.

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

Организация логгеров и файлов

Настройки логгеров и файлов для организации логирования можно структурировать в конфигурационном файле log4j, представив их в XML-формате для удобства чтения:

xml
Скопировать код
<!-- Корректная перенаправление логов в файлы с помощью log4j сводится к управлению логами, как Человек-паук пользуется паутиной между зданиями. -->
<appender name="FileAppender" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="specific.log"/>
  <param name="MaxFileSize" value="10MB"/>
  <param name="MaxBackupIndex" value="5"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
  </layout>
</appender>

<!-- Логгеры — это аналог джарвиса, который осуществляет сортировку и контроль логов. -->
<logger name="com.yoursite.YourClass" additivity="false">
  <level value="INFO"/>
  <appender-ref ref="FileAppender"/>
</logger>

Применение правильной политики логирования

Сформулируйте политику логирования, чтобы избежать переполнения жёсткого диска. Быть может, вы захотите использовать TimeBasedTriggeringPolicy и стратегии для автоматического удаления устаревших записей.

Как улучшить и использовать логи

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

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

Настройка Log4j напоминает настройку радиоприёмника на ваш любимый канал логирования. Если классы настроены на разные «частоты» (файлы и уровни логгера), это поможет вам оставаться «на волне» логов:

Java
Скопировать код
// 🎵 Входим на нужную волну...
log4j.logger.SpecificClass=DEBUG, AppenderFM984
log4j.appender.AppenderFM984=org.apache.log4j.FileAppender
log4j.appender.AppenderFM984.File=specific.log

Такой подход позволит вам легко «вылавливать» необходимую информацию из разных «волн» логов.

Улучшение функционала логирования

Использование свойства log4j.logger

Установка связи логгера с классом через свойство log4j.logger позволяет точно организовывать логи, генерируемые каждым классом.

Противодействие дублированию логов

Свойство additivity ключевым образом помогает предотвратить дублирование логов и гарантирует уникальность каждой записи.

Консистентное форматирование логов

Используйте формат ConversionPattern для консистентной и чёткой записи информации в логах. Это обеспечит порядок и упрощает анализ данных.

Эффективное использование LogManager

Метод LogManager.getLogger() позволяет создавать специализированные логгеры в процессе работы программы, что дает возможность динамически управлять различными типами логов без нарушения общих принципов настройки.

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

  1. Log4j – Конфигурирование Log4j 2 — официальное руководство по настройке Log4j 2.
  2. Log4j – Appenders Log4j 2 — детализированная документация по Appenders в Log4j 2.
  3. DZone: Детальное управление логами с Log4j 2 — стратегии для детального контроля логов в Log4j 2.
  4. Log4j2 Пример обучающего руководства – Конфигурация, уровни, Appenders — практическое руководство по использованию Log4j 2.