log4j2.properties
Конфигурация логирования приложения.
Параметры логирования приложения задаются в конфигурационном файле log4j2.properties, размещенном в каталоге конфигурационных файлов.
Путь к этому каталогу указан в параметре "-Dext.prop.dir" виртуальной машины Java (как правило это /opt/naumen/nausd4/conf).
Имя файла конфигурации обязательно должно содержать цифру 2 после "log4j".
В разделе приводится описание базовой конфигурации логирования для приложения. При необходимости настройки специфических схем логирования рекомендуем заблаговременно обратиться в клиентский сервис ITSM 365 до выполнения обновления на версии 4.14.5+.
- Основные сущности и настройки логирования
- Базовые настройки логирования
- Переход с log4j на log4j2
- Настройки логирования счетчиков времени
Основные сущности и настройки логирования
Основные термины:
- 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 минут удаляются.
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 и более новые необходимо внести изменения в настройки логирования.
- Скачайте шаблон файла log4j2.properties с сайта NAUMEN.
- Поместите файл log4j2.properties в каталог с конфигурационными файлами приложения (путь к каталогу задается параметром "-Dext.prop.dir" виртуальной машины Java (как правило, это /opt/naumen/nausd4/conf или c:/naumen/nausd4/conf).
-
Пропишите в файле путь к хранению логов, частоту переключения активного лога, срок хранения архивных логов:
property.logbasepath=/opt/naumen/nausd4/logs property.triggerinterval=1 property.archivelogmaxage=P60D
Настройки в шаблоне log4j2.properties соответствуют настройкам шаблона log4j.properties за исключением того, что в нем настроено сжатие архивных логов архиватором gzip.
-
Если сжатие не требуется, то уберите из шаблона имени архивного лога расширение .gz (параметр appender.min.filePattern).
Это же расширение необходимо убрать из шаблона имени файлов для удаления старых архивных логов (параметр appender.min.strategy.action.filename.glob).
-
Если в 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.