Можно использовать два Logger
в одном классе.
Первая идея: получить два регистратора с разными именами:
package com.mycompany.apackage.MyClass;
public class MyClass {
private static final logger = Logger.getLogger(Myclass.class)
private static final dbLogger = Logger.
getLogger(Myclass.class.getName() + ".dblogger")
}
Конфигурация для пакета dbLogger
:
<root>
<appender-ref ref="mainlog" />
</root>
<logger name="com.mycompany.apackage.MyClass.dblogger">
<appender-ref ref="dbappender" />
</logger>
(не проверено).В этом случае dbLogger
также регистрируется для приложения mainlog
.Если это не подходит, вы можете использовать пользовательский фильтр в mainlog
(и других) приложениях, который отфильтровывает сообщения dbLogger
.Другое решение заключается в использовании совершенно другого префикса для dbLogger
:
private static final logger = Logger.getLogger(Myclass.class)
private static final dbLogger = Logger.
getLogger("dblogger." + Myclass.class.getName())
Log4j config:
<root>
</root>
<logger name="com.mycompany">
<appender-ref ref="mainlog" />
</logger>
<logger name="dblogger.com.mycompany">
<appender-ref ref="dbappender" />
</logger>
Обратите внимание, что если вы передадите тот же параметр методу getLogger()
, выполучит один и тот же Logger
объект, поэтому вам придется использовать разные имена.