Логирование приложения «Менеджер службы каталогов»
Приложение позволяет гибко настраивать логирование для выявления и фиксации возможных проблем в работе.
Настройка логирования выполняется в файле application.yml в секции logging:
Для работы с ротацией файла с лог-сообщениями и архивацией используется библиотека logback.
Настройки по умолчанию
После установки и запуска приложения по умолчанию логи пишутся с указанными ниже параметрами (если не заданы иные значения):
logging:
level:
tech.inno.dsm: DEBUG
file:
name: /var/log/dsm.log
logback:
rollingpolicy:
file-name-pattern: /var/log/dsm_%d{yyyy-MM-dd}_archive-%i.log
max-file-size: 10MB
total-size-cap: 1000MB
max-history: 365
Уровень логирования
Доступные уровни:
-
TRACE— самый низкий уровень ведения лога, используемый для записи подробной информации об отладке, в частности о ходе выполнения приложения; -
DEBUG— используется для отладки менее подробных сообщений, чем TRACE-сообщения. Эти сообщения дают представление о поведении приложения, что может быть полезно для устранения неполадок; -
INFO— уровень сообщений, описывающих нормальное поведение приложения. Помогают контролировать производительность приложения; -
WARN— уровень сообщений, описывающих потенциальные проблемы или предупреждения. Эти сообщения указывают на то, что произошло что-то неожиданное или потенциально проблемное, но приложение по-прежнему может нормально работать; -
ERROR— уровень указывает на сообщения, описывающие ошибки или исключения. Указывают, что с приложением что-то пошло не так, и необходимо предпринять корректирующие действия; -
OFF— логирование выключено.
Пример:
logging:
level:
tech.inno.dsm: TRACE
Настройка вывода
Логи приложения могут выводиться одним из способов:
-
на консоль;
-
в файл;
-
отправляться на сервер.
| При одновременной настройке записи в файл и отправки на сервер логи будут отправляться только на сервер. |
Запись логов в файл
Для записи логов в файл необходимо указать в блоке file параметр name с путем до файла.
Пример:
logging:
file:
name:
${LOG_FILE:dsm.log} # путь к файлу
Политики ротации файла с лог-сообщениями
При записи лог-сообщений в файл события постоянно добавляются в конец файла. Размер лог-файла постепенно увеличивается. При применении политики ротации текущий файл с лог-сообщениями в зависимости от заданных в конфигурации условий разбивается на несколько файлов, один из которых становится архивным файлом с лог-сообщениями, во второй продолжается запись новых лог-сообщений приложения.
К архивным файлам в целях экономии места на диске может быть применено сжатие.
Библиотека logback содержит секцию rollingpolicy, которая позволяет настроить политику ротации и архивацию.
Доступны для использования 2 механизма ротации логов: по времени и по размеру и времени.
В описанных ниже параметрах конфигурации можно задать максимальное время хранения архивных файлов, а также максимальный объем хранимых архивных файлов, по достижении которого более старые архивные файлы будут удалены.
Ротация по времени (Time Based Rolling Policy)
Политика ротации, основанная на времени, например, по дням или по месяцам.
Основным параметром конфигурации является file-name-pattern, содержит только спецификатор %d (дата).
Если file-name-pattern не содержит спецификатор %d, то возникнет ошибка при запуске приложения.
|
Параметры:
Определяет название лог-файла и механизм, который будет использован для ротации логов.
Максимальное количество лог-файлов.
Максимальный суммарный размер всех лог-файлов.
Ротация по размеру и времени (Size And Time Based Rolling Policy).
Данная политика используется, когда ротация логов требуется по времени и по размеру.
Параметр file-name-pattern необходимо задавать со спецификаторами %d (дата) и %i (индекс файла ротации).
Также для данного механизма необходимо использовать параметр max-file-size.
Проверка необходимости ротации выполняется 1 раз в минуту во время очередной записи нового лог-файла. Если %d спецификатор содержит минуты или текущий размер файла больше max-file-size, то произойдет ротация. В связи с этим при постоянной записи лог-сообщений в лог-файл ротированные файлы имеют размер max-file-size.
Параметры:
Определяет название лог-файла и механизм, который будет использован для ротации логов.
Максимальный размер лог-файла.
Пример:
logging:
file:
name:
${LOG_FILE:dsm.log}
logback:
rollingpolicy:
file-name-pattern: ${LOG_FILE}_%d{yyyy-MM}_archive-%i.log
max-file-size: 500MB
total-size-cap: 1GB
max-history: 7
В данном примере запись логов всегда ведется в файл с именем dsm.log.
Первый триггер, по которому будет создан архивный файл, содержится в параметре file-name-pattern конфигурации. Где поле дата — %d{yyyy-MM} детализировано месяцем. В начале каждого месяца (далее — период ротации) будет создан архивный файл с лог-сообщениями с именем, например, для архива за январь: dsm.log_2023-01_archive-0.log. Все логи из текущего файла будут перенесены в него.
Второй триггер содержится в параметре max-file-size конфигурации.
max-file-size: 500MB — означает, что до истечения периода ротации, как только текущий файл, в который ведется запись логов, достигнет размера 500МБ, то будет создан архивный файл (файлы) с именем согласно шаблону, содержащемуся в file-name-pattern.
Также будет создан архивный файл с именем согласно шаблону, содержащемуся в file-name-pattern.
total-size-cap и max-history — параметры конфигурации, отвечающие за удаление архивных файлов, где первым применяется max-history (максимально допустимое количество архивных файлов).
Например, если период ротации — месяц (в рассматриваемом примере), а max-history: 7, то максимальное количество хранимых архивных файлов будет равно 7 (эквивалентно периоду 7 месяцев). Но при этом если в конфигурации задан параметр max-file-size, то до истечения периода ротации будут также созданы архивные файлы по достижению максимального размера текущего лог-файла.
Например:
-
dsm.log_2023-01_archive-0.log — архивация текущего лог-файла в начале февраля;
-
dsm.log_2023-02_archive-0.log — архивация текущего лог-файла в начале марта;
-
dsm.log_2023-03_archive-0.log — архивация по достижению размера текущего лог-файла в марте;
-
dsm.log_2023-03_archive-1.log — архивация текущего лог-файла в начале апреля.
Параметр total-size-cap является необязательным и не работает без max-history. Отвечает за максимальный размер всех архивных файлов, по достижению которого более старые файлы (с меньшим индексом) будут удалены.
Отправка на сервер
В application.yml пропишите путь к файлу с конфигурациями (logback-udp.xml), необходимыми для отправки логов в GELF-формате на сервер Graylog по udp-протоколу, а также параметры сервера Graylog (host и port).
Пример:
logging:
config: "classpath:logback-udp.xml" # Путь к конфигурации отправки логов на сервер
graylog:
host: localhost # Graylog host
port: 12201 # Graylog port
Маскирование паролей в лог-сообщениях
Для обеспечения безопасности при выводе данных УЗ в лог-сообщении пароль маскируется.
Например, при создании доверительного отношения лог-сообщение имеет вид:
Run commands: /bin/bash -c sudo samba-tool domain trust create "inno.tech" --username="user123@inno.tech" --password="***" --create-location=both --skip-validation