Java 关闭 log4j.xml 中的调试或日志消息

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25156812/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 23:43:55  来源:igfitidea点击:

Turn off debug or log messages in log4j.xml

javaxmllogginglog4j

提问by Tushar Ahirrao

I want to turn off debug or log message in log4j.xml.

我想关闭 log4j.xml 中的调试或日志消息。

My log4j.xml is :

我的 log4j.xml 是:

<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="debug" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false" />
        <param name="file" value="./logs/learning.log" />
        <param name="Threshold" value="debug" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
        </layout>
    </appender>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="consoleAppender" />
        <appender-ref ref="fileAppender" />
    </root>

My Java code :

我的Java代码:

 public static void main(String[] args) {
        log.info("info");
        log.debug("dddffff");
    }

If I run this program still INFO messages are also getting logged, Below is log file

如果我运行这个程序仍然会记录 INFO 消息,下面是日志文件

07 Aug 2014 12:54:49  INFO MainClass - info
07 Aug 2014 12:54:49 DEBUG MainClass - dddffff

Now I want to turn off INFO messages.

现在我想关闭 INFO 消息。

回答by Abhinav kumar

set the logging level Value = OFFinstead of DEBUG

设置日志级别Value = OFF而不是DEBUG

回答by Santhosh

Set the threshold value to info, for ex in your configuration file if you need to turn OFFthe messages for debug to file appender,

info如果您需要将OFF调试消息转换为文件附加程序,请将阈值设置为,例如在您的配置文件中,

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="append" value="false" />
    <param name="file" value="./logs/learning.log" />
    <param name="Threshold" value="INFO" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
    </layout>
</appender>

enable logging only for infonot for debug.You can turn off logging by setting OFF.

仅对info非调试启用日志记录。您可以通过设置关闭日志记录OFF

Read here for more infoabout configuring the xml file for log4j.

阅读此处了解有关为 log4j 配置 xml 文件的更多信息

回答by Paul Vargas

You can turn off the log for a class or package. e.g.:

您可以关闭类或包的日志。例如:

<!-- console -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <param name="threshold" value="TRACE" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="conversionPattern" 
               value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
    </layout>
</appender>

<!-- categories -->
<category name="org.apache.commons">
    <priority value="OFF" />
</category>
<category name="org.apache.catalina.loader.WebappClassLoader">
    <priority value="OFF" />
</category>

<!-- root -->
<root>
    <priority value="TRACE" />
    <appender-ref ref="STDOUT" />
</root>

See more in Apache log4j 1.2 - Short introduction to log4j.

Apache log4j 1.2 - log4j 的简短介绍中查看更多信息。

回答by Eliko

We should write to the log4j config file

我们应该写入 log4j 配置文件

<logger name="packageName.Class" additivity="false">
    <level value="INFO" />
    <appender-ref ref="fileAppender" />
</logger>

I used the full qualified name of the class in the config file, which caused to the getLogger method write to the appender file only logs from the specific class. Using the name of the class only you will get in the appender file, all the logs written from other class with the same level or above.

我在配置文件中使用了类的全限定名,这导致 getLogger 方法只写入来自特定类的日志。仅使用类的名称,您将在appender 文件中获得所有从其他同级别或更高级别的类写入的日志。

回答by Joman68

You can set the logging level for a package like this:

您可以为这样的包设置日志记录级别:

log4j2.xmlsnippet:

log4j2.xml片段:

    <Loggers>
        <Root level="debug">
            <appender-ref ref="Console" />
        </Root>
        <Logger name="org.eclipse.jetty" level="info" additivity="true">
            <appender-ref ref="Console" />
        </Logger>
    </Loggers>

In this example, classes in the org.eclipse.jettypackage output INFO level logging. All other classes output DEBUG level logging.

在此示例中,org.eclipse.jetty包中的类输出 INFO 级别的日志记录。所有其他类输出调试级别的日志记录。