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

时间:2009-05-28 12:46:19

标签: java logging

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

5 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:8)

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

java.util.logging.ConsoleHandler.level = NONE

在日志记录配置文件中。

答案 2 :(得分:5)

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

答案 3 :(得分:1)

将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

答案 4 :(得分:0)

我用:

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