我需要将来自同一类的调试消息记录到不同的文件中
我的意思是,在同一个类中,我需要一个特定的调试语句转到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
下的类中选择哪个日志语句转到哪个文件追加器?
答案 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。