При выполнении задачи Gradle setupTomcat в каталог проекта устанавливается сервер Tomcat, и производится его дополнительная конфигурация. В частности, в подкаталоге
tomcat/bin
создаются файлы setenv.bat
и setenv.sh
, а в подкаталоге tomcat/conf
файл log4j.xml
.
Файлы setenv.*
в переменной CATALINA_OPTS
в числе прочего устанавливают параметры загрузки конфигурационного файла log4j.xml
.
Файл log4j.xml
определяет конфигурацию логгирования. Рассмотрим структуру этого файла.
-
Элементы
appender
задают "устройства вывода" логов. Основными аппендерами являютсяFILE
иCONSOLE
. В параметреThreshold
аппендера можно задать порог уровня сообщения. По умолчанию порог для файла -DEBUG
, для консоли -INFO
. Это означает, что в файл выводятся сообщения с уровнямиERROR
,WARN
,INFO
,DEBUG
, а в консоль - с уровнямиERROR
,WARN
иINFO
.Для файлового аппендера в параметре
File
задается путь к файлу лога, а в параметреAppend
- признак, стирать ли содержимое файла при перезапуске сервера, или добавлять в конец. Настройки по умолчанию задают файлtomcat/logs/app.log
и режим стирания при перезапуске. На этапе эксплуатации приложения рекомендуется установить для параметраAppend
значениеtrue
.Файловый аппендер по умолчанию реализуется классом
org.apache.log4j.DailyRollingFileAppender
, который ежедневно в 00:00:00 переименовывает накопившийся за день файл лога в имя с прошедшей датой, и начинает новый лог. Это позволяет избежать создания слишком больших файлов логов. -
Элементы
category
задают параметры логгеров, через которые производится посылка сообщений из кода программы. Имена категорий иерархические, то есть например настройки для категорииcom.company.sample
влияют на логгерыcom.company.sample.core.CustomerServiceBean
,com.company.sample.web.CustomerBrowse
, если для них явно не заданы собственные настройки.Минимальный уровень указывается в элементе
priority
. Например, если для категории задан приоритетINFO
, то сообщения с уровнямиDEBUG
иTRACE
выводиться не будут. Следует иметь в виду, что на вывод сообщения также влияет порог уровня, заданный в аппендере.
Оперативно изменять уровни для категорий и пороги аппендеров для работающего сервера можно с помощью экрана каталога журналов сервера tomcat/logs
.
Платформа автоматически добавляет к сообщениям, выводимым в лог, следующую информацию:
-
[приложение]
- имя веб приложения, развернутого в Tomcat, код которого выводит данное сообщение. Эта информация помогает различить сообщения от разных блоков приложения (Middleware, Web Client), так как они выводятся в один файл. -
[пользователь]
- логин пользователя приложения, от имени которого в данный момент работает код, выводящий сообщение. Это позволяет в общем логе отслеживать активность конкретных пользователей. Если код, выводящий сообщение, не связан в момент вывода с пользовательской сессией, информация о пользователе не выводится.
Например, следующее сообщение в логе выведено кодом блока Middleware (app-core
), работающим от имени пользователя admin
:
2013-12-19 18:48:17,282 DEBUG [com.haulmont.cuba.core.app.DataManagerBean] [app-core] [admin] loadList: metaClass=sec$User, view=com.haulmont.cuba.security.entity.User/user.browse, query=select u from sec$User u, max=100