Log4j允许在下面4个地方中任意一个指定过滤器:
与追加器,记录器和属性元素处于同一级别。 这些过滤器可以在事件传递到LoggerConfig之前接受或拒绝事件。在记录器元素中。 这些过滤器可以接受或拒绝特定记录器的事件。在一个appender元素。 这些过滤器可以防止或导致事件由追加器处理。在追加器引用元素中。 这些过滤器用于确定记录器是否应将事件路由到追加器。虽然只能配置单个 filter元素,但该元素可以是代表CompositeFilter的 filters元素。 filters 元素允许在其内配置任何数量的filter元素。下面的例子表示如何在ConsoleAppender上配置多个过滤器。
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="debug" name="XMLConfigTest" packages="org.apache.logging.log4j.test"> <Properties> <Property name="filename">target/test.log</Property> </Properties> <ThresholdFilter level="trace"/> <Appenders> <Console name="STDOUT"> <PatternLayout pattern="%m MDC%X%n"/> </Console> <Console name="FLOW"> <!-- this pattern outputs class name and line number --> <PatternLayout pattern="%C{1}.%M %m %ex%n"/> <filters> <MarkerFilter marker="FLOW" onMatch="ACCEPT" onMismatch="NEUTRAL"/> <MarkerFilter marker="EXCEPTION" onMatch="ACCEPT" onMismatch="DENY"/> </filters> </Console> <File name="File" fileName="${filename}"> <PatternLayout> <pattern>%d %p %C{1.} [%t] %m%n</pattern> </PatternLayout> </File> <List name="List"> </List> </Appenders> <Loggers> <Logger name="org.apache.logging.log4j.test1" level="debug" additivity="false"> <ThreadContextMapFilter> <KeyValuePair key="test" value="123"/> </ThreadContextMapFilter> <AppenderRef ref="STDOUT"/> </Logger> <Logger name="org.apache.logging.log4j.test2" level="debug" additivity="false"> <Property name="user">${sys:user.name}</Property> <AppenderRef ref="File"> <ThreadContextMapFilter> <KeyValuePair key="test" value="123"/> </ThreadContextMapFilter> </AppenderRef> <AppenderRef ref="STDOUT" level="error"/> </Logger> <Root level="trace"> <AppenderRef ref="List"/> </Root> </Loggers> </Configuration>转载自 并发编程网 - ifeve.com
相关资源:敏捷开发V1.0.pptx