我有一个Java应用程序,它使用的是slf4j-logj412,版本1.7.25。我正在实例化一个Logger:
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(SubsetAndProcess.class);
我的log4j模式是:
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
并在长循环中使用标准log.debug()
语句,这会执行一些繁重的处理。这一切都表现正常,但今天在一次运行中,输出是:
...
2017-09-21 12:26:37 DEBUG SubsetAndProcess:569 - Processing row 40 of 1311
2017-09-21 12:26:38 DEBUG SubsetAndProcess:569 - Processing row 41 of 1311
2017-09-21 12:26:39 DEBUG SubsetAndProcess:569 - Processing row 42 of 1311
2017-09-21 12:26:40 DEBUG SubsetAndProcess:? - Processing row 43 of 1311
2017-09-21 12:26:41 DEBUG SubsetAndProcess:? - Processing row 44 of 1311
2017-09-21 12:26:42 DEBUG SubsetAndProcess:? - Processing row 45 of 1311
...
即。它忘记了它正在记录的行号。在剩下的时间里,这种情况持续下去。
以前的运行从未这样做过。这不是什么大不了的事,但它真的很奇怪,而且我认为如果有人知道答案,那么对于Java的内部工作方式,或者至少是记录器,它可能会非常有启发性。
h2g2相关答案赞赏:)