Filter log by template - log4j

I have the following layout in my log4j xml file:

"%d{ISO8601} %c %p [%t] [%x] 9.5.4.RC12 %m%n"

I want to ever receive a log containing the message process [proc#] completed , it should be skipped. I mean that every journal, except those that contain this message, must be printed. [proc#] will contain the process number of the maximum length 4. What can I create a filter with this function in my xml configuration file. If so, how?

+5
pattern-matching log4j
source share
2 answers

ExpressionFilter can do this.

In the filter definition inside the appender definition, use an expression like this (note that LIKE is a regular expression matching operator):

"MSG LIKE 'process \ [. * \] Completed" "

See ExpressionFilter Javadoc here:

http://logging.apache.org/log4j/companions/apidocs/org/apache/log4j/filter/ExpressionFilter.html

An example :

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <appender name="CONSOLE"> <param name="Target" value="System.out"/> <layout> <param name="ConversionPattern" value="%d %p [%c] - %m%n"/> </layout> <filter class="org.apache.log4j.filter.ExpressionFilter"> <param name="expression" value="EXCEPTION ~= com.company.BackendNotAvailableException" /> <param name="acceptOnMatch" value="false"/> </filter> </appender> <root> <priority value ="INFO" /> <appender-ref ref="CONSOLE"/> </root> </log4j:configuration> 

An example is taken here: http://blog.trifork.com/2011/08/23/filtering-specific-exceptions-when-using-log4j/

+7
source share

This is how I configured log4j to filter by IP address. In particular, 127.0.0.1 , as shown in log4j.xml below. Note that you should also include log4j.dtd next to log4j.xml . You must use the XML syntax.

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="CATALINA" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Append" value="true" /> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /> <param name="Encoding" value="UTF-8" /> <param name="File" value="${catalina.base}/logs/catalina" /> <layout class="net.logstash.log4j.JSONEventLayoutV1" /> </appender> <appender name="CATALINAOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Append" value="true" /> <param name="Encoding" value="UTF-8" /> <param name="File" value="${catalina.base}/logs/catalina.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> <filter class="org.apache.log4j.filter.ExpressionFilter"> <param name="expression" value="MSG LIKE '127.0.0.1'" /> <param name="acceptOnMatch" value="false"/> </filter> </appender> <appender name="LOCALHOST" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Append" value="true" /> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /> <param name="Encoding" value="UTF-8" /> <param name="File" value="${catalina.base}/logs/localhost" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c- %m%n" /> </layout> </appender> <logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]"> <level value="INFO" /> <appender-ref ref="LOCALHOST" /> </logger> <root> <level value="INFO" /> <appender-ref ref="CATALINA" /> <appender-ref ref="CATALINAOUT" /> </root> </log4j:configuration> 
+2
source share

All Articles