Java Logger只对文件,没有屏幕输出

我有一个很简单的问题,但无法找到解决方案。 我有一个添加了文件处理程序的记录器,但它仍然从我的控制台中消失了。 我怎么能让记录器只将所有输出路由到文件,没有控制台输出?

在添加文件处理程序之前,从根记录器中删除所有处理程序(使用Logger.getHandlers()并为每个处理程序调用Logger.removeHandler() )。

老问题,但帮助其他开发人员:

您也可以在记录器上使用logger.setUseParentHandlers(false)

保证不会将任何内容写入控制台的最简单方法是:

 java.util.logging.ConsoleHandler.level = NONE 

在您的日志配置文件中。

使用log4j

 import org.apache.log4j.Logger; Logger logger = Logger.getLogger("com.whatever"); PropertyConfigurator.configure("file-log4j.properties"); 

并在file-log4j.properties中设置您的显示级别:

 # Root logger option log4j.rootLogger=INFO, file # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=index-service.log log4j.appender.file.MaxFileSize=1MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.file.Append=false 

我用:

 Logger logger = Logger.getLogger("MyLog"); Logger parentLog= logger.getParent(); if (parentLog!=null&&parentLog.getHandlers().length>0) parentLog.removeHandler(parentLog.getHandlers()[0]);