1
在我想要輸出控制檯消息/和/有記錄我代碼的地方我目前正在調用System.out.println /和/和log.info。如何將選定的日誌消息複製到sysout?
這當然是不可取的,我想解決它。我一直在看slf4j/logback中的標記接口,並想知道這是否適合這個任務,即採取所有標記的日誌消息,並將它們的副本發送到sysout?
或者還有更好的方法嗎?
在我想要輸出控制檯消息/和/有記錄我代碼的地方我目前正在調用System.out.println /和/和log.info。如何將選定的日誌消息複製到sysout?
這當然是不可取的,我想解決它。我一直在看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>
我在這裏展示的用例顯示了所有錯誤以及在控制檯上標記爲「通知」的所有內容,但您可以調整過濾器以顯示或隱藏您要查找的任何內容。