Логирование

Вы можете пропустить, либо бегло изучить этот раздел и вернуться к нему, если вам понадобится изменение стандартных параметров логирования.

По умолчанию логи серверов сохраняются в папке log приложения. В качестве подсистемы логирования используется библиотека log4j. Конфигурирование логирования заключается в правке файла data/log4j.xml (log4j-radius.xml - для RADIUS-сервера, log4j-collector.xml - для коллектора). Это xml-файл определенной структуры.

Код
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
 
<appender name="APPLICATION" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log.dir.path}${log.prefix}.log" />
<param name="MaxFileSize" value="100MB" />
<param name="MaxBackupIndex" value="2" />
<param name="Append" value="false" />
 
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" />
</layout>
 
<filter class="ru.bitel.common.logging.Log4JMDCFilter">
<param name="key" value="nestedContext" />
<param name="value" value="${log.prefix}" />
</filter>
</appender>
 
<appender name="MQ" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log.dir.path}${log.prefix}.mq.log" />
<param name="MaxFileSize" value="100MB" />
<param name="MaxBackupIndex" value="2" />
<param name="Append" value="false" />
 
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" />
</layout>
 
<filter class="ru.bitel.common.logging.Log4JMDCFilter">
<param name="key" value="nestedContext" />
<param name="value" value="mq" />
</filter>
</appender>
 
<appender name="ASYNC" class="ru.bitel.common.logging.Log4jAsyncAppender">
<appender-ref ref="APPLICATION"/>
</appender>
 
<root>
<priority value="INFO" />
<appender-ref ref="ASYNC" />
</root>
 
</log4j:configuration>

Логирование в системе основано на категориях и контекстах. Разные контексты (server/script или collector/processor/loader) разнесены по разным аппендерам. Аппендер - это куда и как добавляется запись лога - т.е., например в файл server.log такого вида:

server 04-06/12:04:49 INFO [main] DefaultServerSetup - Init DB connection pools
server 04-06/12:04:49 INFO [main] DefaultServerSetup - Init trash pools..
server 04-06/12:04:49 INFO [main] DefaultServerSetup - Init trash pool trash_1
server 04-06/12:04:49 INFO [main] Server - Starting BGBillingServer..
server 04-06/12:04:49 INFO [main] Server - HTTP port: 6565
server 04-06/12:04:49 INFO [main] Server - Starting HTTP connector..
server 04-06/12:04:49 INFO [main] Server - HTTPS port: -1

root - это главная категория, по умолчанию priority/@value='INFO', т.е. все логирование в режиме info. Чтобы переключить логирование в режим debug, необходимо указать здесь 'DEBUG'.

<root>
<priority value="DEBUG" />
<appender-ref ref="ASYNC" />
</root>

Также в каждом аппендере можно указать фильтр по приоритету. Например, в root указать DEBUG, а в аппендере APPLICATION добавить указанную ниже ветку, чтобы логирование для всех контекстов, кроме APPLICATION было в режиме DEBUG.

<param name="Threshold" value="ERROR" />
<appender name="MQ" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ERROR" />
<param name="File" value="${log.dir.path}${log.prefix}.mq.log" />
<param name="MaxFileSize" value="100MB" />
<param name="MaxBackupIndex" value="2" />
<param name="Append" value="false" />
 
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" />
</layout>
 
<filter class="ru.bitel.common.logging.Log4JMDCFilter">
<param name="key" value="nestedContext" />
<param name="value" value="mq" />
</filter>
</appender>