Mag*_*ezy 3 database logging log4j
我有一个具有log4j日志记录的java项目.它使用滚动文件appender和多个记录器来记录文件.我想添加一个DBappender并且有一个单独的记录器,它只写入这个appender,其他记录器都没有向它发送消息.我需要,比如说一个类有两个记录器,一个写入fileAppender,另一个写入dbAppender.这是可能的,如果是的话,它的配置是什么?
谢谢
可以Logger在一个类中使用两个s.
第一个想法:获取具有不同名称的两个记录器:
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")
}
Run Code Online (Sandbox Code Playgroud)
配置包dbLogger:
<root>
<appender-ref ref="mainlog" />
</root>
<logger name="com.mycompany.apackage.MyClass.dblogger">
<appender-ref ref="dbappender" />
</logger>
Run Code Online (Sandbox Code Playgroud)
(未测试.)在这种情况下,它dbLogger也会记录到mainlogappender.如果它不合适,你可以在mainlog(和其他)appender中使用自定义过滤器来过滤掉消息dbLogger.另一种解决方案是使用完全不同的前缀dbLogger:
private static final logger = Logger.getLogger(Myclass.class)
private static final dbLogger = Logger.
getLogger("dblogger." + Myclass.class.getName())
Run Code Online (Sandbox Code Playgroud)
Log4j配置:
<root>
</root>
<logger name="com.mycompany">
<appender-ref ref="mainlog" />
</logger>
<logger name="dblogger.com.mycompany">
<appender-ref ref="dbappender" />
</logger>
Run Code Online (Sandbox Code Playgroud)
请注意,如果将相同的参数传递给getLogger()方法,则会获得相同的Logger对象,因此必须使用不同的名称.
| 归档时间: |
|
| 查看次数: |
5123 次 |
| 最近记录: |