4.7.2. Особенности конфигурации логирования
В данном разделе рассматриваются особенности конфигурации логирования, знание которых может помочь при анализе проблем.
Платформа содержит класс LogbackConfigurator
, который встраивается в стандартную процедуру инициализации Logback в качестве имплементации интерфейса Configurator
. Этот конфигуратор выполняет следующие шаги при поиске источника конфигурации:
-
Ищет файл
logback.xml
в домашнем каталоге приложения (т.е. в каталоге, указанном системным свойствомapp.home
). -
Если не найден, ищет файл
app-logback.xml
в корне classpath. -
Если ничего не найдено, выполняет базовую конфигурацию: вывод в консоль с порогом WARN.
Имейте в виду, что данная процедура выполняется только если в корне classpath нет файла logback.xml
.
Задача Gradle setupTomcat
создает logback.xml
в каталоге deploy/app_home
, так что описанная выше процедура инициализации находит его на первом шаге. Это обеспечивает на этапе разработки дефолтную конфигурацию с записью логов в каталог deploy/app_home/logs
.
Задача Gradle deploy
копирует проектный файл etc/logback.xml
(если он существует) в deploy/app_home
, так что разработчик может настроить конфигурационный файл в проекте и он будет использован в локальном Tomcat.
Задачи Gradle buildWar
и buildUberJar
могут создавать файл app-logback.xml
в корне classpath (которым является каталог /WEB-INF/classes
для WAR и /
для UberJAR) из следующих источников:
-
Из файла, указанного в параметре задачи
logbackConfigurationFile
. -
Из
logback.xml
вcuba-gradle-plugin
, если параметр задачиuseDefaultLogbackConfiguration
установлен в true (это его состояние по умолчанию).
Если logbackConfigurationFile
не указан и useDefaultLogbackConfiguration
установлен в false, никакая конфигурация логирования в архиве не создается.
Благодаря процедуре инициализации LogbackConfigurator
, и при отсутствии в корне classpath файла logback.xml
, конфигурация, встроенная в WAR/UberJAR может быть переопределена файлом logback.xml
в домашнем каталоге приложения. Это позволяет кастомизировать логирование в среде эксплуатации без необходимости пересборки WAR/UberJAR.