如何将选定的日志消息复制到sysout?

时间:2016-01-22 11:01:08

标签: java logging slf4j logback

在我的代码中我要输出控制台消息的位置/和/它已记录我当前正在调用System.out.println /和/和log.info。

这当然是不可取的,我想解决它。我一直在查看slf4j / logback中的marker接口,我想知道这是否适合这个任务,即获取所有标记的日志消息,并将它们的副本发送到sysout?

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

是的,我接触过这种事情的方式是使用精彩的标记机制:

要记录:

private static final Marker notification = MarkerFactory.getMarker("NOTIFICATION");
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
...
log.info(notification, "Important message to go everywhere");

在logback.xml中,类似于:

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
            <marker>NOTIFICATION</marker>
        </evaluator>
        <OnMatch>ACCEPT</OnMatch>
        <OnMismatch>NEUTRAL</OnMismatch>
    </filter>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    <encoder>
        <pattern>${pattern}</pattern>
    </encoder>
</appender>

我在这里显示的用例显示了所有错误以及控制台上标记为“通知”的任何内容,但您可以调整过滤器以显示或隐藏您正在寻找的任何内容。