Java Log4j如何选择要记录日志的文件

5

我需要将来自同一类的调试信息记录到不同的文件中。
我的意思是,来自同一类的特定调试语句需要进入fileA,而另一个特定调试语句需要进入fileB

如果不清楚,我的目标是将网络消息记录到与此类输出的其他日志消息完全分开的文件中。

如果我执行以下操作:

<logger name="com.test.modules" additivity="false" >
    <priority value="debug"/>
    <appender-ref ref="netWorkCommunication"/>  
    <appender-ref ref="generalDebug"/>  
  </logger>  

那么,来自我的类的日志将会发送到两个文件中(因为它属于同一包)。

我该如何配置log4j,以便我可以选择哪些来自com.test.modules下的类的日志语句被发送到哪个文件 appender?

2个回答

7

为每个文件使用单独的记录器:

private static Logger log = Logger.getLogger(YourClass.class);
private static Logger networkLog = Logger.getLogger("network." + YourClass.class.getName());
private static Logger httpLog = Logger.getLogger("http." + YourClass.class.getName());

并按照惯例为每个Logger定义appender。


2
这看起来是需要使用多个记录器的情况。为网络配置一个单独的记录器,只需指定不同的附加器即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接