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