Логирование
Вы можете пропустить, либо бегло изучить этот раздел и вернуться к нему, если вам понадобится изменение стандартных параметров логирования.
По умолчанию логи серверов сохраняются в папке 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
>