如何使用log4j.properties
文件快速关闭所有 Log4J 输出?
答案 0 :(得分:112)
将级别设置为OFF (而不是DEBUG,INFO,......)
答案 1 :(得分:75)
如果要以编程方式关闭记录,请使用
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
答案 2 :(得分:46)
log4j.rootLogger=OFF
答案 3 :(得分:13)
您可以将级别更改为OFF,以消除所有日志记录。根据log4j网站,有效级别按重要性顺序为TRACE,DEBUG,INFO,WARN,ERROR,FATAL。 one undocumented level被称为OFF,它比FATAL更高级别,并关闭所有日志记录。
您还可以创建一个额外的根记录器来记录任何内容(级别为OFF),以便您可以轻松切换根记录器。 Here's a post让你开始。
您可能还想阅读Log4J FAQ,,因为我认为关闭所有日志记录可能无济于事。它肯定不会加速你的应用程序那么多,因为无论如何都会执行日志代码,直到log4j决定它不需要记录这个条目。
答案 4 :(得分:4)
将级别更改为您想要的级别。 (我使用的是Log4j2,版本2.6.2)。这是最简单的方法,更改为<Root level="off">
例如:文件log4j2.xml
开发环境
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SimpleConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
<Loggers>
<Root level="info">
<AppenderRef ref="SimpleConsole"/>
</Root>
</Loggers>
</Configuration>
生产环境
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SimpleConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="off">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
<Loggers>
<Root level="off">
<AppenderRef ref="SimpleConsole"/>
</Root>
</Loggers>
</Configuration>
答案 5 :(得分:3)
此外,还可以通过编程方式关闭注销:
Logger.getRootLogger().setLevel(Level.OFF);
或者
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());