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

时间:2014-08-06 09:31:51

标签: java xml logging log4j

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

我的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>

我的Java代码:

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

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

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

现在我要关闭INFO消息。

5 个答案:

答案 0 :(得分:3)

设置记录级别值=关闭而不是 DEBUG

答案 1 :(得分:3)

您可以关闭类或包的日志。 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>

Apache log4j 1.2 - Short introduction to log4j中查看更多内容。

答案 2 :(得分:1)

我们应该写入log4j配置文件

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

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

答案 3 :(得分:0)

将阈值设置为info,如果您需要将OFF调试消息转为文件追加器,请将配置文件中的ex设置为<{p}},

<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>

仅为info启用日志记录而不进行调试。您可以通过设置OFF来关闭日志记录。

Read here for more info关于为log4j配置xml文件。

答案 4 :(得分:0)

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

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> 包中的类输出INFO级别的日志记录。所有其他类都输出DEBUG级别的日志记录。