我已经搜索了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)如何打印出包+类名的任何想法?