在我的代码中我要输出控制台消息的位置/和/它已记录我当前正在调用System.out.println /和/和log.info。
这当然是不可取的,我想解决它。我一直在查看slf4j / logback中的marker接口,我想知道这是否适合这个任务,即获取所有标记的日志消息,并将它们的副本发送到sysout?
或者有更好的方法吗?
答案 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>
我在这里显示的用例显示了所有错误以及控制台上标记为“通知”的任何内容,但您可以调整过滤器以显示或隐藏您正在寻找的任何内容。