Divyansh Goel
Divyansh Goel

Reputation: 39

Need to Set Minimum and Maximum Level of Logging in Log4j

My requirement is little weird.

I want different formatting pattern for different Logging levels that's why I have used this code. But I am unable to set the min and max limit. Because when I am setting logging level to Debug, it is also printing the ERROR and FATAL log messages in that format but I have defined a different format for ERROR and FATAL and because of this ERROR messages are printing two times for this code. I do not want to print ERROR and FATAL log messages in DEBUG pattern format.

log4j.rootLogger=DEBUG, infoLog, errorLog

log4j.appender.infoLog=org.apache.log4j.ConsoleAppender
log4j.appender.infoLog.Target=System.out
log4j.appender.infoLog.layout=org.apache.log4j.PatternLayout
log4j.appender.infoLog.layout.ConversionPattern=%m%n
#log4j.appender.infoLog.Threshold=DEBUG
log4j.appender.infoLog.filter.a=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.infoLog.filter.a.LevelToMatch=INFO
log4j.appender.infoLog.filter.a.AcceptOnMatch=true
log4j.appender.infoLog.filter.a.LevelMin=DEBUG
log4j.appender.infoLog.filter.a.LevelMax=INFO

#log4j.appender.infoLog.filter.b=org.apache.log4j.varia.LevelMatchFilter
#log4j.appender.infoLog.filter.b.LevelToMatch=DEBUG
#log4j.appender.infoLog.filter.b.AcceptOnMatch=true

log4j.appender.errorLog.Threshold=ERROR
log4j.appender.errorLog=org.apache.log4j.ConsoleAppender
log4j.appender.errorLog.Target=System.out
log4j.appender.errorLog.layout=org.apache.log4j.PatternLayout
log4j.appender.errorLog.layout.ConversionPattern=\u001b[31;1m%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{1}:%M():%L - %m%n

Upvotes: 2

Views: 3974

Answers (1)

Divyansh Goel
Divyansh Goel

Reputation: 39

This xml Configuration will resolve this problem.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="debugLog" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="DEBUG"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG"/>
            <param name="LevelMax" value="INFO"/>
        </filter>
    </appender>
    <appender name="errorLog" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="WARN"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{1}:%M():%L - %m%n"/>
        </layout>
    </appender>
    <root>
        <level value="DEBUG"></level>
        <appender-ref ref="debugLog"/>
        <appender-ref ref="errorLog"/>
    </root>
</log4j:configuration>

Upvotes: 1

Related Questions