log4j日志记录。 2个追加器,2个记录器相同的包装,第2个记录器输出不满意

时间:2016-11-24 16:21:42

标签: logging log4j

我已经搜索了SO以获得答案,并且令人惊讶地没有看到我的确切问题。简而言之:

我需要将输出记录到2个单独的文件,outputA.log& outputB.log。

OutputA将记录每笔交易的足迹。

OutputB.log只会记录操作的时间。

日志语句不得与其他日志文件交叉。

现在,我大部分时间都在努力。我的log4j有两个用于文件的appender,以及两个用于记录日志的记录器。

我的记录器定义为:

<logger name="com.mypackage">
    <level value="INFO" />
    <appender-ref ref="OutputA_Appender"/>
</logger>

<logger name="TIMING_LOG" additivity="false">
    <level value="INFO" />
    <appender-ref ref="OutputB_Appender"/>
</logger>

哪个好。日志内容彼此隔离。但是,调用记录器有点问题 - 假设该类名为SomeClassDoingStuff.java:

>     private static final Logger LOGGER = LoggerFactory.getLogger(SomeClassDoingStuff.class);   
> 
>     private static final Logger LOGGER_TIMINGS= LoggerFactory.getLogger"TIMING_LOG");

问题是日志输出的差异;来自LOGGER:

[2016-11-24 15:40:41,611] [thread-1] [someId=1252] [INFO ] [com.mypackage.SomeClassDoingStuff] My log message: foo!
来自LOGGER_TIMINGS的

[2016-11-24 16:05:38,694] [thread-1] [someId=1252] [INFO ] [TIMING_LOG] My log message: Bar! (ms): 340

虽然LOGGER在日志语句中给出了pacjage +类名(来自转换模式中的%c参数),但LOGGER_TIMINGS打印出“TIMING_LOG”,这是无用的。我可以在转换模式中使用%C获取被调用的名称,但由于它是时间敏感的系统,我错了,不能!

关于第二个记录器(LOGGER_TIMINGS)如何打印出包+类名的任何想法?

0 个答案:

没有答案