javaapachelogginglog4j

Log4j StringMatchFilter and denyAll filter properties configuration


Can anyone please let me know what filter properties to use? I want to separate the log messages into two different log files. Below is the configuration which I am trying to use, but it's not working. In log1 I want to log all messages that don't contain 'UserMgmt-' and in log2 I want to only log messages that do contain 'UserMgmt-'.

log4j.logger.com.abc=DEBUG, log1
log4j.logger.com.abc=DEBUG, log2


log4j.appender.log1=org.apache.log4j.RollingFileAppender
log4j.appender.log1.Append=true
log4j.appender.log1.File=C:/Oracle/Middleware/user_projects/domains/logs/G_loAFg/UM.log
log4j.appender.log1.layout=org.apache.log4j.PatternLayout
log4j.appender.log1.layout.ConversionPattern=%d %-6p [%c] %m%n
log4j.appender.log1.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.log1.filter.1.StringToMatch=UserMgmt-  
log4j.appender.log1.filter.1.AcceptOnMatch=false

log4j.appender.log2=org.apache.log4j.RollingFileAppender
log4j.appender.log2.Append=true
log4j.appender.log2.File=C:/Oracle/Middleware/user_projects/domains/logs/PM.log
log4j.appender.log2.layout=org.apache.log4j.PatternLayout
log4j.appender.log2.layout.ConversionPattern=%d %-6p [%c] %m%n
log4j.appender.log2.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.log2.filter.1.StringToMatch=UserMgmt-  
log4j.appender.log2.filter.1.AcceptOnMatch=true

Solution

  • Added deny all filter in 1st log1 after that it worked

    log4j.appender.log1.filter=org.apache.log4j.varia.DenyAllFilter
    

    log4j.logger.com.abc=DEBUG, log1
    log4j.logger.com.abc=DEBUG, log2
    
    
    log4j.appender.log1=org.apache.log4j.RollingFileAppender
    log4j.appender.log1.Append=true
    log4j.appender.log1.File=C:/Oracle/Middleware/user_projects/domains/logs/G_loAFg/UM.log
    log4j.appender.log1.layout=org.apache.log4j.PatternLayout
    log4j.appender.log1.layout.ConversionPattern=%d %-6p [%c] %m%n
    log4j.appender.log1.filter.1=org.apache.log4j.varia.StringMatchFilter
    log4j.appender.log1.filter.1.StringToMatch=UserMgmt-  
    log4j.appender.log1.filter.1.AcceptOnMatch=false
    log4j.appender.log1.filter=org.apache.log4j.varia.DenyAllFilter
    log4j.appender.log2=org.apache.log4j.RollingFileAppender
    log4j.appender.log2.Append=true
    log4j.appender.log2.File=C:/Oracle/Middleware/user_projects/domains/logs/PM.log
    log4j.appender.log2.layout=org.apache.log4j.PatternLayout
    log4j.appender.log2.layout.ConversionPattern=%d %-6p [%c] %m%n
    log4j.appender.log2.filter.1=org.apache.log4j.varia.StringMatchFilter
    log4j.appender.log2.filter.1.StringToMatch=UserMgmt-  
    log4j.appender.log2.filter.1.AcceptOnMatch=true