2016-01-22 30 views
1

在我想要輸出控制檯消息/和/有記錄我代碼的地方我目前正在調用System.out.println /和/和log.info。如何將選定的日誌消息複製到sysout?

這當然是不可取的,我想解決它。我一直在看slf4j/logback中的標記接口,並想知道這是否適合這個任務,即採取所有標記的日誌消息,並將它們的副本發送到sysout?

或者還有更好的方法嗎?

回答

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> 

我在這裏展示的用例顯示了所有錯誤以及在控制檯上標記爲「通知」的所有內容,但您可以調整過濾器以顯示或隱藏您要查找的任何內容。

相關問題