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.