Turn off debug or log messages in log4j.xml

37,340

Solution 1

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.

Solution 2

set the logging level Value = OFF instead of DEBUG

Solution 3

We should write to the log4j config file

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

Share:
37,340
Tushar Ahirrao
Author by

Tushar Ahirrao

I know Javascript, HTML5, CSS3, Java, PHP and more.... I enjoy building things, learning programming languages, listening to music.

Updated on May 30, 2020

Comments

  • Tushar Ahirrao
    Tushar Ahirrao almost 4 years

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

    My log4j.xml is :

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

     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

    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.