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

9

我想在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信息。


所以你想仅记录错误信息。这意味着不应记录logger.debug - Santhosh
5个回答

6
您可以关闭某个类或包的日志记录。例如:
<!-- 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 - 简短介绍log4j


4

将日志级别设置为值 = OFF,而不是DEBUG


2
我们需要写入log4j配置文件。
<logger name="packageName.Class" additivity="false">
    <level value="INFO" />
    <appender-ref ref="fileAppender" />
</logger>

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


请您详细说明一下您提供的解决方案,并增加一些描述吗? - abarisone
1
我在配置文件中使用了类的完全限定名,这导致getLogger方法仅将特定类的日志写入appender文件。如果只使用类名,则会在appender文件中获取所有具有相同级别或更高级别的其他类写入的日志。 - Eliko

1

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

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>

在这个例子中,org.eclipse.jetty 包中的类输出 INFO 级别日志。所有其他类都输出 DEBUG 级别日志。

0

将阈值设置为info,例如,如果您需要关闭调试消息到文件附加器,请在配置文件中进行设置。

<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来关闭日志记录。

在此处阅读更多信息有关配置log4j的xml文件的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接