如何禁用log4j.rootLogger的输出?

时间:2011-09-22 10:41:25

标签: java log4j

我想在登录文件时禁用输出到控制台。请参阅下面的配置文件:

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,如何禁用它?

4 个答案:

答案 0 :(得分:12)

你可以使用`log4j.additivity.FileLog = false,这是你正在寻找的'标志'。

来自official log4j documentation

  

记录器C的日志语句的输出将转到所有的appender   在C及其祖先。这就是“appender”这个词的含义   加”。

     

但是,如果记录器C的祖先,比如P,则具有   additivity标志设置为false,然后C的输出将被定向到all   C中的追随者及其祖先,包括P而不是P   在P的任何祖先中的追随者。

     

记录器默认情况下将其可加性标志设置为true。

从根记录器中删除“stdout”(如在其他答案中所提出的)可能不是解决方案,因为我认为在某些情况下您仍然对该控制台日志感兴趣。

答案 1 :(得分:5)

从此处删除stdout

log4j.rootLogger=info,stdout

要:

log4j.rootLogger=info

答案 2 :(得分:1)

我不知道用户提供的确切问题的答案,但是遇到类似的问题,使用以下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

答案 3 :(得分:-1)

从根记录器中删除“stdout”。它将停止在控制台上书写。