Question


I'm using log4j for logs.
I have a class that i want to print to the console only log.info level,
And print to some file log.info + log.debug levels (The same class).

I tried to setup the log4j.xml as follows :

<!--appender to parser file-->
<appender name="parserFile" class="org.apache.log4j.FileAppender">
    <param name="File" value="/var/log/java/parser/parser.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{E MMM dd HH:mm:ss} %c : %m%n" />
    </layout>
</appender> 

 <!--appender to the stdout-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
    </layout>
</appender>


<logger name="parser.ParserMainJava">
    <level value="debug" />
    <appender-ref ref="parserFile" />
</logger>

<logger name="parser.ParserMainJava">
    <level value="info" />
    <appender-ref ref="console" />
</logger>

This is my configuration but I can't use 2 loggers with the same package name.
Any suggestions ?
Thanks,
Or.

Was it helpful?

Solution

Just define one logger for "parser.ParserMainJava" with debug level, and add the following parameter to your console appender definition:

<param name="Threshold" value="INFO"/>

OTHER TIPS

In my case I needed to adjust my AppenderRef. Adding the param element to the ConsoleAppender did not work. This element inside Loggers is good.

<Root level="debug">
   <AppenderRef ref="FileAppender" />
   <AppenderRef ref="ConsoleAppender" level="info"/>
</Root>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top