Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating different logs based on logging level in log4j

I am trying to create 'different' appenders based on different levels but so far I couldn't find a way to isolate logging levels....

<category name="com.sample" additivity="false">
    <priority value="INFO" />
    <appender-ref ref="AllAsync"/> 
    <appender-ref ref="ConsoleAppender"/> 
  </category>

I need a way to be able to land only INFO prioritised logs to be appended. As INFO level logging also puts on DEBUG marked loggers as well...this isn't helping me out.

Another thing is for 'same' package I could not define different logging appenders :

     <category name="com.sample" additivity="false">
            <priority value="INFO" />
            <appender-ref ref="AllAsync"/> 
            <appender-ref ref="ConsoleAppender"/> 
          </category>

     <category name="com.sample" additivity="false">
        <priority value="DEBUG" />
        <appender-ref ref="AllAsync"/> 
        <appender-ref ref="ConsoleAppender"/> 
      </category>

Here I am getting the errors something like :

log4j:ERROR Attempted to append to closed appender named [AllAsync].
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
like image 227
Rohit Bansal Avatar asked Nov 05 '22 02:11

Rohit Bansal


1 Answers

You can filter by exact log level using a LevelMatchFilter according to the log4j Faq and wiki.

 <filter class="org.apache.log4j.varia.LevelMatchFilter">
         <param name="LevelToMatch" value="info"/> 
         <param name="AcceptOnMatch" value="true"/>  
 </filter>

Example here.

like image 168
Mike Twain Avatar answered Nov 09 '22 07:11

Mike Twain