簡體   English   中英

Log4j記錄信息消息而不記錄警告消息

[英]Log4j logging info messages without logging warn messages

我試圖將某些信息消息記錄到文件中,但是一旦運行該應用程序,就會同時記錄警告和信息消息。 現在,根據我從本站點所讀到的內容,您不能登錄一個而不登錄另一個。 有人曾嘗試過這個嗎? 如果是這樣,您的屬性文件的外觀如何?

我的屬性文件如下所示:

 ***** Set root logger level to INFO and its two appenders to stdout and R.
log4j.rootLogger=INFO, stdout, R

# ***** stdout is set to be a ConsoleAppender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# ***** stdout uses PatternLayout.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# ***** Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%M has started] (%F:%L) - %m%n
/
# ***** R is set to be a RollingFileAppender.
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.R.File="folder where log will be saved"
log4j.appender.R.layout.ConversionPattern=%5p [%m has started] %c{2}.[%x] (%F:%L) %d{yyyy-MM-dd HH:mm:ss} - %m%n

# ***** R uses PatternLayout.
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%5p [%m has started] %c{2}.[%x] (%F:%L) %d{yyyy-MM-dd HH:mm:ss} - %m%n

AFAIK沒有任何標准方法可以抑制比您感興趣的日志級別更高的日志級別。

但是,您可能可以使用自定義附加程序執行此操作。

它可能看起來類似於:

public class MyAppender extends AppenderSkeleton {
  protected void append(LoggingEvent event) {
    if( event.getLevel() == Level.INFO ) {
      //append here, maybe call a nested appender
    }
  }
}

日志級別WARN高於INFO ,並且日志記錄配置定義了附加程序要記錄的最小閾值級別。 因此,所有高於該級別的消息也將被記錄。

因此,期望WARN消息。 而且我認為您無法將其配置為所需的方式。

如果不應該打印的WARN消息與INFO消息來自不同的軟件包,則可以為這些軟件包定義不同的日志級別。 第一個可以指定錯誤級別,第二個可以指定級別

它應該看起來像這樣:log4j.logger.com.test.something = ERROR log4j.logger.com.other.package = INFO

干杯

為什么要過濾WARN級別? 正如peshkira所說,您可以使用兩個不同的記錄器來拆分/過濾日志輸出,或者可以使用grep工具進行過濾(脫機),或者如果您仍然不需要它們,則可以從代碼中刪除WARN日志。

據我了解,像LevelMatchFilterLevelRangeFilter這樣的高級過濾器可以為您解決問題。

但是需要記住的是,使用這些可能需要xml配置而不是屬性: 無法為log4j設置LevelRangeFilter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM