log4j2.properties

Конфигурация логирования приложения.

Параметры логирования приложения задаются в конфигурационном файле log4j2.properties, размещенном в каталоге конфигурационных файлов.

Путь к этому каталогу указан в параметре "-Dext.prop.dir" виртуальной машины Java (как правило это /opt/naumen/nausd4/conf).

Имя файла конфигурации обязательно должно содержать цифру 2 после "log4j".

В разделе приводится описание базовой конфигурации логирования для приложения. При необходимости настройки специфических схем логирования рекомендуем заблаговременно обратиться в клиентский сервис ITSM 365 до выполнения обновления на версии 4.14.5+.

Основные сущности и настройки логирования

Основные термины:

  • logger — основной элемент конфигурации, указывающий, что именно нужно записать в лог;
  • appender — элемент конфигурации, определяющий куда необходимо сохранить запись, предоставленную logger;
  • layout — элемент конфигурации, отвечающий за формат представления записи лога.

Доступные уровни логирования:

  • ALL — специальный уровень, в лог записываются все сообщения.
  • DEBUG — важные отладочные сообщения;
  • INFO — информационные сообщения;
  • WARN — сообщения с предупреждением о потенциально опасных ситуациях;
  • ERROR — сообщения об ошибках, при возникновении которых приложение может продолжить работу;
  • FATAL — сообщения об ошибках, которые, вероятно, приведут к прекращению работы приложения;
  • OFF— специальный уровень, сообщения в лог не записываются.
  • TRACE — подробные отладочные сообщения.

Базовые настройки логирования

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

packages=ru.naumen.core.server Служебная строка конфигурации библиотеки для подключения плагинов SMP

Настройки rootLogger – корневого объекта logger, задающего механизм логирования событий в системе по умолчанию

rootLogger.level=WARN Уровень сообщений, которые будут записываться в лог приложения (в примере, WARN)
rootLogger.appenderRef.sdng.ref=sdng Подключение аппендера с именем sdng к основному логгеру системы (rootLogger)

Настройка файлового аппендера

(может быть создано несколько аппендеров, если нужно писать логи в несколько мест одновременно)

appender.sdng.type=RollingFile Тип аппендера
appender.sdng.name=sdng

Имя аппендера

(произвольное имя, используемое в конфигурационном файле)

appender.sdng.fileName=/opt/naumen/nausd4/logs/sdng.log Текущий активный файл, в который пишется лог
appender.sdng.filePattern=/opt/naumen/nausd4/logs/sdng.log.%d{yyyy-MM-dd}

Шаблон имени файла архивного лога.

Если шаблон файла заканчивается на ".gz", ".zip", ".gzip", ".bzip2", ".deflate", ".pack200", ".xz", то полученный архив будет сжат с использованием схемы сжатия, соответствующей суффиксу.

Форматы bzip2, Deflate, Pack200 и XZ требуют сжатия Apache Commons.

Для XZ требуется XZ для Java

appender.sdng.layout.type=Log4jLayout Тип используемого layout
appender.sdng.policies.type=Policies Политика переключения логов - задает, когда должно происходить переключение
appender.sdng.policies.time.type=TimeBasedTriggeringPolicy

Использование политики переключения логов, основанной на времени.

Переключение происходит, как только шаблон даты/времени больше не применяется к активному файлу

appender.sdng.policies.time.interval=1

Часта переключения активного лога.

Зависит от наиболее конкретной единицы времени в шаблоне дат.

Например, с шаблоном данных с часами в качестве наиболее конкретного элемента и с шагом в 4 переключение будет происходить каждые 4 часа

appender.sdng.policies.time.modulate=true Признак, указывающий, следует ли корректировать интервал, чтобы вызвать следующее переключение активного лога на границе интервала
appender.sdng.strategy.type=DefaultRolloverStrategy

Признак, указывающий использование стратегии переключения по умолчанию. Определяет, как должно происходить переключение и какие действия при этом должны выполняться

appender.sdng.strategy.action.type=Delete Действие, описывающее то, как должны удаляться архивные логи
appender.sdng.strategy.action.basepath=/opt/stands/stand_tpivi/logs Каталог, содержащий логи, которые нужно удалять
appender.sdng.strategy.action.lastmodified.type=IfLastModified Условие, определяющее возраст файлов, которые нужно удалять
appender.sdng.strategy.action.lastmodified.age=P5D

Возраст файлов, которые нужно удалять.

Используется формат ISO-8601

appender.sdng.strategy.action.filename.type=IfFileName Условие, определяющее шаблон имени файлов, которые нужно удалять
appender.sdng.strategy.action.filename.glob=sdng.log.* Шаблон имени файлов, которые нужно удалять
Определение уровня логирования для определенных классов. С помощью данных настроек можно настроить различные уровни логирования для тех или иных функциональных компонентов приложения
logger.defNaumen.name=ru.naumen Уровень логирования по умолчанию для классов Naumen
logger.defNaumen.level=INFO Уровень логирования, в приведенном примере - INFO
logger.%ИМЯ ЛОГГЕРА%.name=%ИМЯ КЛАССА%

%ИМЯ ЛОГГЕРА% - произвольное имя логгера,

%ИМЯ КЛАССА% - имя класса Naumen, для которого настраивается уровень логирования

logger.%ИМЯ ЛОГГЕРА%.level=%УРОВЕНЬ ЛОГИРОВАНИЯ%

%ИМЯ ЛОГГЕРА% - имя логгера из предыдущего параметра,

%УРОВЕНЬ ЛОГИРОВАНИЯ% - уровень логирования для данного логгера

В конфигурационном файле можно определять переменные и задавать значения параметров с их помощью. Формат определения и использования переменных следующий:

property.%ИМЯ ПЕРЕМЕННОЙ%=%ЗНАЧЕНИЕ ПЕРЕМЕННОЙ%
...
%ПАРАМЕТР%=${%ИМЯ ПЕРЕМЕННОЙ%}

Пример: Определение аппендера. Переключение активного лога происходит каждые 10 минут. Архивные логи сжимаются архиватором zip. Архивные логи старше 60 минут удаляются.

Copy
property.logbasename=min.log
property.logbasepath=/opt/naumen/nausd4/logs/min
property.triggerinterval=10
property.archivelogmaxage=P60M

appender.min.type=RollingFile
appender.min.name=short_min
appender.min.fileName=${logbasepath}/${logbasename}
appender.min.filePattern=${logbasepath}/${logbasename}.%d{yyyy-MM-dd-HH-mm}.zip
appender.min.layout.type=Log4jLayout
appender.min.policies.type=Policies
appender.min.policies.time.type=TimeBasedTriggeringPolicy
appender.min.policies.time.interval=${triggerinterval}
appender.min.policies.time.modulate=true
appender.min.strategy.type=DefaultRolloverStrategy

appender.min.strategy.action.type=Delete
appender.min.strategy.action.basepath=${logbasepath}
appender.min.strategy.action.lastmodified.type=IfLastModified
appender.min.strategy.action.lastmodified.age=${archivelogmaxage}
appender.min.strategy.action.filename.type=IfFileName
appender.min.strategy.action.filename.glob=${logbasename}.*.zip

Переход с log4j на log4j2

При обновлении приложения с версий, более старых, чем 4.14.5 на версию 4.14.5 и более новые необходимо внести изменения в настройки логирования.

  1. Скачайте шаблон файла log4j2.properties с сайта NAUMEN.
  2. Поместите файл log4j2.properties в каталог с конфигурационными файлами приложения (путь к каталогу задается параметром "-Dext.prop.dir" виртуальной машины Java (как правило, это /opt/naumen/nausd4/conf или c:/naumen/nausd4/conf).
  3. Пропишите в файле путь к хранению логов, частоту переключения активного лога, срок хранения архивных логов:

    property.logbasepath=/opt/naumen/nausd4/logs
    property.triggerinterval=1
    property.archivelogmaxage=P60D

    Настройки в шаблоне log4j2.properties соответствуют настройкам шаблона log4j.properties за исключением того, что в нем настроено сжатие архивных логов архиватором gzip.

  4. Если сжатие не требуется, то уберите из шаблона имени архивного лога расширение .gz (параметр appender.min.filePattern).

    Это же расширение необходимо убрать из шаблона имени файлов для удаления старых архивных логов (параметр appender.min.strategy.action.filename.glob).

  5. Если в log4j.properties были настройки, отличные от настроек по умолчанию, то перенесите их в новый файл или обратитесь в службу технической поддержки NAUMEN для настройки логирования.

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

    Настройка в старом формате:

    log4j.category.%ИМЯ КЛАССА%=%УРОВЕНЬ ЛОГИРОВАНИЯ%

    Настройка в новом формате:

    logger.%ИМЯ ЛОГГЕРА%.name=%ИМЯ КЛАССА%
    logger.%ИМЯ ЛОГГЕРА%.level=%УРОВЕНЬ ЛОГИРОВАНИЯ%

Настройки логирования счетчиков времени

Режим подробного логирования счетчиков времени включается для диагностики корректности пересчета счетчика времени.

Подробное логирование доступно в режиме DEBUG.

Параметры, управляющие режимом логирования счетчиков:

logger.ldap.name=ru.naumen.core.server.timer.bcp.AbstractTimerCalculationOperation
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.BackTimerCalculationOperation
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.BackTimerStatusChangeActionPassivateSetZeroDeadlineIfExceedImpl
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.TimerStatusChangeActionActivatePassivateIfNeedRecalcImpl
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.TimerStatusChangeActionPassivateActivateIfNeedRecalcImpl
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.TimerStatusChangeOperationsBackTimerImpl
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.TimerStatusChangeOperationsImpl
logger.ldap.level=DEBUG
logger.ldap.name=ru.naumen.core.server.timer.bcp.TimerStatusChangeOperationsTimerImpl
logger.ldap.level=DEBUG

Сообщения в логе, связанные со счетчиком времени, имеют префикс: "TimerLog[uuid:code]".

Для отключения логирования достаточно перейти на уровень логирования выше DEBUG.