johnny-b-goode
johnny-b-goode

Reputation: 3893

Log4j displays messages with incorrect level

I am looking for a logger configuration that outputs everything from some package to file and WARN and higher messages to console. To implement this i wrote following log4j.xml file:

<?xml version="1.0" encoding="UTF-8" ?>

<appender name="DIAGAPPDENDER" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${rpt.trace}/diagnostic.log"/>
</appender> 

<appender name="ROOTAPPENDER" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout"> 
</appender>

<logger name="rpt.diagnostic">
    <level value ="ALL" />
    <appender-ref ref="DIAGAPPDENDER"/> 
</logger>

<root>
    <priority value ="WARN" />
    <appender-ref ref="ROOTAPPENDER" /> 
</root>

However, log messages of all levels appears not only in file but also in console which is not what i need. What i am missing? Thanks. Paul.

Upvotes: 1

Views: 135

Answers (1)

Sam
Sam

Reputation: 1328

Its easy . You can add param threshold to your console appender and set any level where the message of level value equal or above that will be displayed .

<?xml version="1.0" encoding="UTF-8" ?>

<appender name="DIAGAPPDENDER" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${rpt.trace}/diagnostic.log"/>
</appender> 

<appender name="ROOTAPPENDER" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="Threshold" value="WARN" /> 
</appender>

<logger name="rpt.diagnostic">
    <level value ="ALL" />
    <appender-ref ref="DIAGAPPDENDER"/> 
</logger>

<root>
    <priority value ="WARN" />
    <appender-ref ref="ROOTAPPENDER" /> 
</root>

Upvotes: 4

Related Questions