【发布时间】:2017-10-03 02:07:21
【问题描述】:
我有一个非常简单的问题,但找不到解决方案。 我有一个添加了文件处理程序的记录器,但它仍然从我的控制台中发送垃圾邮件。 我怎样才能让记录器将所有输出单独路由到一个文件,没有控制台输出?
【问题讨论】:
-
感叹号让这个问题看起来很刺激。
-
哪个日志框架?
我有一个非常简单的问题,但找不到解决方案。 我有一个添加了文件处理程序的记录器,但它仍然从我的控制台中发送垃圾邮件。 我怎样才能让记录器将所有输出单独路由到一个文件,没有控制台输出?
【问题讨论】:
老问题,但为了帮助其他开发人员:
您也可以在您的记录器上使用logger.setUseParentHandlers(false)。
【讨论】:
保证不会向控制台写入任何内容的最简单方法是放置:
java.util.logging.ConsoleHandler.level = NONE
在您的日志记录配置文件中。
【讨论】:
在添加文件处理程序之前,从根记录器中删除所有处理程序(使用 Logger.getHandlers() 并为每个处理程序调用 Logger.removeHandler())。
【讨论】:
将 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]);
【讨论】: