java log4j选择要登录的文件

时间:2012-01-31 09:08:01

标签: java tomcat logging log4j

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

如果不清楚,我要做的是将网络消息记录到一个完全独立的文件,而不是该类输出的其他loggin消息。

如果我这样做

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

然后我的类的日志记录将转到两个文件(因为它来自同一个包)。

如何配置log4j以便我可以从com.test.modules下的类中选择哪个日志语句转到哪个文件追加器

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

这实际上看起来应该使用多个记录器。为网络配置一个单独的记录器,只需为它指定一个不同的appender。