logback:记录到System.out&的竞争条件ERR

时间:2015-11-02 09:34:38

标签: java eclipse logging slf4j logback

我尝试以将其他日志事件记录到System.out时将错误记录到System.err的方式配置回溯。 到目前为止,我提出的最好的方法是定义两个带过滤器的appender。这解决了主要问题,但引入了一个我想避免的新问题: 有两个appender,有时会发生记录日志事件的顺序混乱 例如:
在代码中:信息日志后跟错误日志 在控制台上:错误在信息事件之前记录到控制台。

我对如何避免此问题感兴趣,同时仍将错误记录到System.err,其余部分记录到System.out。

1 个答案:

答案 0 :(得分:1)

恐怕你一般不能强制执行"纠正"在这种情况下订购。消息被写入两个不同的流,它们被独立地刷新到输出介质,并且它取决于很多东西,它们不能控制你的代码或者记录,两个流的内容在输出上是如何混合的。试试一个简单的例子:

    while(true) {
        System.out.println("XXX");
        System.err.println("YYYYYY");
    }

虽然我的代码是同步的,但XXX和YYYYY字符串在我的控制台上随机混合(" XXX"或" YYYYYY"行随机打印)。并且logback正在做类似的事情,并且不能强制你的控制台如何打印出两个独立的流。