簡體   English   中英

如何禁用log4j.rootLogger的輸出?

[英]how can I disable output to log4j.rootLogger?

我想在登錄文件時禁用輸出到控制台。 請參閱下面的配置文件:

log4j.rootLogger=info,stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L --- %m%n

log4j.category.FileLog=info,R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=E:\\temp\\FileLog
log4j.appender.R.Append = true
log4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.R.layout=org.apache.log4j.PatternLayout  
log4j.appender.R.layout.ConversionPattern=%m[%d{MM-dd HH:mm:ss}]%n

當我使用時:

Logger.getLogger("FileLog").info("LogText-FileLog");

這個日志打印到stdout ,我怎么能禁用它?

你可以使用`log4j.additivity.FileLog = false,這是你正在尋找的'標志'。

官方log4j文檔

記錄器C的日志語句的輸出將轉到C及其祖先中的所有appender。 這就是術語“appender additivity”的含義。

但是,如果記錄器C的祖先,比如P,將additivity標志設置為false,那么C的輸出將被定向到C中的所有appender及其祖先,包括P但不包括P的任何祖先中的appender。 。

記錄器默認情況下將其可加性標志設置為true。

從根記錄器中刪除“stdout”(如其他答案中所提出的)可能不是解決方案,因為我認為在某些情況下您仍然對該控制台日志感興趣。

從這里刪除標准輸出

log4j.rootLogger=info,stdout

至:

log4j.rootLogger=info

我不知道用戶提供的確切問題的答案,但面臨與以下log4j代碼類似的問題:

log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

我通過更改從控制台中刪除了所有日志記錄行

log4j.rootCategory=INFO, console

log4j.rootCategory=OFF, console

從根記錄器中刪除“stdout”。 它將停止在控制台上書寫。

暫無
暫無

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

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