我的 log4j xml 文件中有以下布局模式:
"%d{ISO8601} %c %p [%t] [%x] 9.5.4.RC12 %m%n"
我想要的是,每当我收到包含消息的日志时process [proc#] completed
,应该跳过。我的意思是除了包含此消息的日志之外的所有日志都应该打印。[proc#]
将包含最大长度为 4 的进程号。
我可以在 xml 配置文件中使用此功能设计一个过滤器吗?如果是这样,那又如何呢?
ExpressionFilter 可以做到这一点。
在附加程序定义内的过滤器定义中,使用类似于以下的表达式(注意 LIKE 是正则表达式匹配运算符):
“MSG LIKE '进程\[.*\]已完成'”
请参阅此处的 ExpressionFilter javadoc:
http://logging.apache.org/log4j/companions/apidocs/org/apache/log4j/filter/ExpressionFilter.html http://logging.apache.org/log4j/companions/apidocs/org/apache/log4j/filter/ExpressionFilter.html
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>
示例取自此处:http://blog.trifork.com/2011/08/23/filtering-specific-exceptions-when-using-log4j/ http://blog.trifork.com/2011/08/23/filtering-specific-exceptions-when-using-log4j/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)