过滤器允许评估日志事件,以确定是否发布或如何发布。过滤器将在其一个过滤器方法上调用,并返回一个结果,它是一个具有3个值之一的枚举:ACCEPT, DENY 和 NEUTRAL。
过滤器可以在四个地方使用:
BurstFilter提供了一种机制,通过在达到最大限制后静默地丢弃事件来控制LogEvents的处理速率。
Burst Filter Parameters:
Parameter Name | Type | Description |
level | String | 要过滤的消息级别。如果超出了maxBurst,则该级别以下的任何内容将被过滤掉。默认值为WARN,不管突发的大小如何,都会记录高于警告的任何消息。 |
rate | float | 每秒允许的平均事件数。 |
maxBurst | integer | 在事件之前可能发生的事件的最大数量被过滤以超过平均速率。默认值为10倍。 |
onMatch | String | 过滤器匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为NEUTRAL。 |
onMismatch | String | 当过滤器不匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为DENY。 |
示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
CompositeFilter提供了一种指定多个过滤器的方法。它作为过滤器元素添加到配置中,并包含使用其他过滤器。过滤器元素不接受任何参数。示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Filters>
<MarkerFilter marker="EVENT" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
<DynamicThresholdFilter key="loginId" defaultThreshold="ERROR"
onMatch="ACCEPT" onMismatch="NEUTRAL">
<KeyValuePair key="User1" value="DEBUG"/>
</DynamicThresholdFilter>
</Filters>
<Appenders>
<File name="Audit" fileName="logs/audit.log">
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="EventLogger" level="info">
<AppenderRef ref="Audit"/>
</Logger>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
DynamicThresholdFilter允许根据特定属性按日志级别进行过滤。例如,如果用户的loginId正在ThreadContext Map中捕获,那么可以为该用户启用调试日志记录。
Dynamic Threshold Filter Parameters:
Parameter Name | Type | Description |
defaultThreshold | String | 要过滤的消息级别。如果键/值对中没有匹配键,则该级别将与事件的级别进行比较。 |
keyValuePair | KeyValuePair[] | 一个或多个KeyValuePair元素,用于定义键的匹配值,以及用于评估键匹配时的Level。 |
onMatch | String | 过滤器匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为NEUTRAL。 |
onMismatch | String | 当过滤器不匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为DENY。 |
示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<DynamicThresholdFilter key="loginId" defaultThreshold="ERROR"
onMatch="ACCEPT" onMismatch="NEUTRAL">
<KeyValuePair key="User1" value="DEBUG"/>
</DynamicThresholdFilter>
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
MapFilter允许对MapMessage中的数据元素进行过滤。
Map Filter Parameters:
Parameter Name | Type | Description |
operator | String | 如果操作符是"or",则任何一个键/值对被匹配将被认为是匹配,否则所有键/值对必须匹配。 |
keyValuePair | KeyValuePair[] | 一个或多个KeyValuePair元素,用于定义键的匹配值,以及用于评估键匹配时的Level。 |
onMatch | String | 过滤器匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为NEUTRAL。 |
onMismatch | String | 当过滤器不匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为DENY。 |
示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<MapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
<KeyValuePair key="eventId" value="Login"/>
<KeyValuePair key="eventId" value="Logout"/>
</MapFilter>
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
此示例配置将显示与上述示例相同的行为,因为配置的唯一记录器是根。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<MapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
<KeyValuePair key="eventId" value="Login"/>
<KeyValuePair key="eventId" value="Logout"/>
</MapFilter>
<AppenderRef ref="RollingFile">
</AppenderRef>
</Root>
</Loggers>
</Configuration>
第三个示例配置将显示与上述示例相同的行为,因为配置的唯一记录器是根,并且根仅配置有单个appender引用。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<BurstFilter level="INFO" rate="16" maxBurst="100"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile">
<MapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
<KeyValuePair key="eventId" value="Login"/>
<KeyValuePair key="eventId" value="Logout"/>
</MapFilter>
</AppenderRef>
</Root>
</Loggers>
</Configuration>
MarkerFilter将配置的标记值与LogEvent中包含的标记进行比较。当标记名称与日志事件的标记或其父母之一匹配时,发生匹配。
Marker Filter Parameters:
Parameter Name | Type | Description |
marker | String | 要比较的标记的名称。 |
keyValuePair | KeyValuePair[] | 一个或多个KeyValuePair元素,用于定义键的匹配值,以及用于评估键匹配时的Level。 |
onMatch | String | 过滤器匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为NEUTRAL。 |
onMismatch | String | 当过滤器不匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为DENY。 |
示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<MarkerFilter marker="FLOW" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
RegexFilter允许将格式化或未格式化的消息与正则表达式进行比较。
Regex Filter Parameters:
Parameter Name | Type | Description |
regex | String | 正则表达式。 |
useRawMsg | boolean | 如果为true,则将使用未格式化的消息,否则将使用格式化的消息。默认值为false。 |
onMatch | String | 过滤器匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为NEUTRAL。 |
onMismatch | String | 当过滤器不匹配时采取的行动。可以是ACCEPT, DENY 或 NEUTRAL。默认值为DENY。 |
示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<RegexFilter regex=".* test .*" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。