我使用使用log4j写入日志的旧版本库.我的默认log4j.properties文件将日志指向控制台,但在主程序的某些特定功能中,我想完全禁用日志记录(来自所有类).
我试过这个:
Logger.getLogger(BasicImplementation.class.getName()).setLevel(Level.OFF);
其中“BasicImplementation”是执行日志记录的主要类之一,但它不起作用 – 日志仍然写入控制台.
这是我的log4j.properties:
log4j.rootLogger=warn,stdout log4j.logger.ac.biu.nlp.nlp.engineml=info,logfile log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n log4j.appender.logfile = ac.biu.nlp.nlp.log.BackupOlderFileAppender log4j.appender.logfile.append=false log4j.appender.logfile.layout = org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n log4j.appender.logfile.File = logfile.log
解决方法
因此,您已定义3个记录器,包括根:
log4j.rootLogger=warn,logfile log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn
不幸的是,要以编程方式禁用它们,您需要在代码中指定其全部主题:
Logger.getLogger("ac.biu.nlp.nlp.engineml").setLevel(Level.OFF); Logger.getLogger("org.BIU.utils.logging.ExperimentLogger").setLevel(Level.OFF); Logger.getRootLogger().setLevel(Level.OFF);