在Java中禁用Log4J输出

cmc*_*nty 85 java logging log4j

如何使用文件快速关闭所有Log4J输出log4j.properties

Edw*_*win 118

将级别设置为OFF(而不是DEBUG,INFO,....)


And*_*tin 76

如果要以编程方式关闭日志记录,请使用

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
    logger.setLevel(Level.OFF);
}
Run Code Online (Sandbox Code Playgroud)

  • 他指定"使用log4j.properties文件"无论如何它非常有用. (5认同)

Rol*_*olf 13

您可以将级别更改为OFF,以消除所有日志记录.根据log4j网站,有效级别按重要性顺序为TRACE,DEBUG,INFO,WARN,ERROR,FATAL.有一个名为OFF的未记录级别,它比FATAL更高级别,并关闭所有日志记录.

您还可以创建一个额外的根记录器来记录任何内容(级别为OFF),以便您可以轻松切换根记录器.这是一篇让你开始的帖子.

您可能还想阅读Log4J FAQ,因为我认为关闭所有日志记录可能没有帮助.它肯定不会加速你的应用程序那么多,因为无论如何执行日志代码,直到log4j决定它不需要记录此条目.


may*_*ʎɐɯ 6

此外,还可以通过编程方式关闭注销:

Logger.getRootLogger().setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)

或者

Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Run Code Online (Sandbox Code Playgroud)

这些使用进口:

import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;
Run Code Online (Sandbox Code Playgroud)


nhu*_*uvy 5

将级别更改为您想要的。(我使用的是 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>
Run Code Online (Sandbox Code Playgroud)

生产环境

<?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>
Run Code Online (Sandbox Code Playgroud)