Log4j - исключая журналирование некоторых классов - PullRequest
1 голос
/ 28 октября 2010

Я использую Log4j в своем приложении, и библиотеки, которые я использую, которые также используют Log4j, также выводят свои журналы в файлы журналов, которые я создаю. Я уже создал appenders для перенаправления журналов одной библиотеки в файл «other.log», но другие библиотеки продолжают регистрироваться в моем основном файле «info.log».

Это мои log4j.properties. Обратите внимание, что в конце я создаю категорию для библиотеки alibrary.apackage и категорию для myproject.apackage, чтобы журналы библиотеки передавались одному приложению, а журналы проекта - другому.

log4j.rootLogger=ALL,InfoAppender,OtherAppender

# AdminFileAppender - used to log messages in the admin.log file.
log4j.appender.InfoAppender=org.apache.log4j.FileAppender
log4j.appender.InfoAppender.File=info.log
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern= %d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n
log4j.appender.InfoAppender.Threshold=DEBUG

log4j.appender.OtherAppender=org.apache.log4j.FileAppender
log4j.appender.OtherAppender.File=other.log
log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.OtherAppender.layout.ConversionPattern= %d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n
log4j.appender.OtherAppender.Threshold=ALL

log4j.category.alibrary.apackage=DEBUG,OtherAppender
log4j.additivity.com.mchange.v2=false
log4j.category.myproject.apackage=ALL,InfoAppender
log4j.additivity.trackme=false

Я все еще продолжаю получать следующее:

В "info.log":

...Logs that I want to be here...
Logs that I do not want to be here, that should go to "other.log". Ex.:
2010/10/28 15:29:25,667 [main] DEBUG org.apache.jasper.compiler.JspRuntimeContext  - Parent class loader is: ContextLoader@null
2010/10/28 15:29:25,668 [main] DEBUG org.apache.jasper.servlet.JspServlet  - ...
2010/10/28 15:29:25,668 [main] DEBUG org.apache.jasper.servlet.JspServlet  - IMPORTANT: Do not modify the generated servlets

В "other.log":

All the logs that I do not want in "info.log" are here. OK.

У меня вопрос: как перенаправить все нежелательные журналы - то есть журналы из других библиотек - в «other.log»?

1 Ответ

2 голосов
/ 03 ноября 2010

Вы хотите сделать OtherAppender rootLogger и специально помещать нужные сообщения в InfoAppender.

Я бы оставил определения appender такими же, а затем настроил бы регистраторы следующим образом:

log4j.rootLogger=ALL,OtherAppender
log4j.category.alibrary.apackage=DEBUG # will default to OtherAppender
log4j.additivity.com.mchange.v2=false
log4j.category.myproject.apackage=ALL,InfoAppender # will go to both logs
log4j.additivity.trackme=false

Это перенаправит все в OtherAppender и только вещи из myproject.apackage в InfoAppender.

...