6.5.1. Настройка логирования в Tomcat
В данном разделе рассматривается настройка логгирования на этапе разработки приложения.
При выполнении задачи Gradle setupTomcat в каталог проекта устанавливается сервер Tomcat, и производится его дополнительная конфигурация. В частности, в подкаталоге tomcat/bin
создаются файлы setenv.bat
и setenv.sh
, а в подкаталоге tomcat/conf
файл logback.xml
.
Файлы setenv.*
в переменной CATALINA_OPTS
в числе прочего устанавливают параметры загрузки конфигурационного файла logback.xml
.
Файл logback.xml
определяет конфигурацию логирования. Рассмотрим структуру этого файла.
-
Элементы
appender
задают "устройства вывода" логов. Основными аппендерами являютсяFILE
иCONSOLE
. В параметреlevel
элементаfilter
можно задать порог уровня сообщения. По умолчанию порог для файла -DEBUG
, для консоли -INFO
. Это означает, что в файл выводятся сообщения с уровнямиERROR
,WARN
,INFO
,DEBUG
, а в консоль - с уровнямиERROR
,WARN
иINFO
.Для файлового аппендера в параметре
file
задается путь к файлу лога. По умолчанию это файлtomcat/logs/app.log
. -
Элементы
logger
задают параметры логгеров, через которые производится посылка сообщений из кода программы. Имена логгеров иерархические, то есть например настройки для логгераcom.company.sample
влияют на логгерыcom.company.sample.core.CustomerServiceBean
,com.company.sample.web.CustomerBrowse
, если для них явно не заданы собственные настройки.Минимальный уровень указывается в атрибуте
level
. Например, если для логгера задан приоритетINFO
, то сообщения с уровнямиDEBUG
иTRACE
выводиться не будут. Следует иметь в виду, что на вывод сообщения также влияет порог уровня, заданный в аппендере.
Оперативно изменять уровни для логгеров и пороги аппендеров для работающего сервера можно с помощью экрана Administration > Server Log, доступного в веб клиенте. Сделанные настройки логирования действуют только в текущем сеансе работы сервера и в файл не сохраняются. Этот экран позволяет также просматривать и загружать файлы логов из каталога журналов сервера tomcat/logs
.
Платформа автоматически добавляет к сообщениям, выводимым в лог, следующую информацию:
-
приложение - имя веб приложения, развернутого в Tomcat, код которого выводит данное сообщение. Эта информация помогает различить сообщения от разных блоков приложения (Middleware, Web Client), так как они выводятся в один файл.
-
пользователь - логин пользователя приложения, от имени которого в данный момент работает код, выводящий сообщение. Это позволяет в общем логе отслеживать активность конкретных пользователей. Если код, выводящий сообщение, не связан в момент вывода с пользовательской сессией, информация о пользователе не выводится.
Например, следующее сообщение в логе выведено кодом блока Middleware (app-core
), работающим от имени пользователя admin
:
16:12:20.498 DEBUG [http-nio-8080-exec-7/app-core/admin] com.haulmont.cuba.core.app.DataManagerBean - loadList: ...