如何将选定的日志消息复制到系统输出?
How to duplicate selected log messages to sysout?
在我的代码中我想输出控制台消息的地方/和/记录它我目前正在调用 System.out.println /and/ 和 log.info.
这当然是不可取的,我想修复它。我一直在查看 slf4j/logback 中的标记界面,想知道这是否适合这项任务,即获取所有标记的日志消息并将它们的副本发送到 sysout?
或者有更好的方法吗?
是的,我处理这种事情的方法是使用美妙的标记机制:
登录:
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>
我在这里展示的用例显示了所有错误以及控制台上标记为 "notification" 的任何内容,但您可以调整过滤器以显示或隐藏您要查找的任何内容.
在我的代码中我想输出控制台消息的地方/和/记录它我目前正在调用 System.out.println /and/ 和 log.info.
这当然是不可取的,我想修复它。我一直在查看 slf4j/logback 中的标记界面,想知道这是否适合这项任务,即获取所有标记的日志消息并将它们的副本发送到 sysout?
或者有更好的方法吗?
是的,我处理这种事情的方法是使用美妙的标记机制:
登录:
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>
我在这里展示的用例显示了所有错误以及控制台上标记为 "notification" 的任何内容,但您可以调整过滤器以显示或隐藏您要查找的任何内容.