5.1 过滤器列表
记录器允许您非常酷地配置消息过滤。为此,他有几十个带有各种参数的过滤器。下表显示了最受欢迎的。
过滤器 | 描述 | |
---|---|---|
1个 | 突发滤波器 | 允许您控制给定日志记录级别的每秒消息频率。 |
2个 | 复合过滤器 | 允许您设置多个顺序过滤器。 |
3个 | 动态阈值滤波器 | 如果在日志中找到某些信息,允许您启用详细日志记录。 |
4个 | 地图过滤器 | 允许您从多个参数为过滤器构建复杂的逻辑表达式。 |
5个 | 标记过滤器 | 允许您按标签过滤消息,必须在事件记录期间首先添加标签。 |
6个 | 正则过滤器 | 允许您设置一个掩码 - 一个正则表达式。 |
7 | 结构化数据过滤器 | 允许您根据消息中是否存在某些数据来过滤消息。 |
8个 | ThreadContextMapFilter | 允许您根据从当前线程的上下文中获取的数据来管理过滤器。 |
9 | 阈值过滤器 | 根据日志消息级别控制日志记录。 |
10 | 时间过滤器 | 允许您在特定时间打开和关闭过滤器。 |
下面我们将只讨论其中的三个。您可以在其官方网站上了解有关这些过滤器的更多信息。
5.2 时间过滤器
过滤器TimeFilter
允许您在特定时间打开和关闭过滤器,它有 5 个参数:
1个 | 开始 | 以格式记录开始时间HH:mm:ss |
2个 | 结尾 | 注销时间格式HH:mm:ss |
3个 | 时区 | 设置时区。 |
4个 | 匹配上 | 如果过滤条件为真,如何记录。也许ACCEPT ,DENY 或者NEUTRAL 。默认NEUTRAL 。 |
5个 | 不匹配 | 如果过滤条件为假,如何记录。也许ACCEPT ,DENY 或者NEUTRAL 。默认NEUTRAL 。 |
让我们设置一个过滤器,每天早上 5 点打开日志记录,并在早上 5:30 关闭它。下面是一个具有完整过滤器配置的示例:
<?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">
<TimeFilter start="05:00:00" end="05:30:00" 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>
5.3 正则表达式过滤器
过滤器RegexFilter
允许您设置用于过滤消息的掩码(正则表达式)。这个过滤器有 4 个参数:
1个 | 正则表达式 | 指定正则表达式 - 用于过滤消息的掩码。HH:mm:ss |
2个 | 使用原始消息 | 在格式化之前 (true) 或格式化之后 (false) 在消息中应用掩码 |
3个 | 匹配上 | 如果过滤条件为真,如何记录。也许ACCEPT ,DENY 或者NEUTRAL 。默认NEUTRAL 。 |
4个 | 不匹配 | 如果过滤条件为假,如何记录。也许ACCEPT ,DENY 或者NEUTRAL 。默认NEUTRAL 。 |
让我们设置一个过滤器,只允许包含单词 codegym 的消息。下面是一个具有完整过滤器配置的示例:
<?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=".* codegym .*" 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>
5.4 阈值滤波器
ThresholdFilter过滤器允许您按消息级别配置过滤。它只有3个参数:
1个 | 等级 | 设置消息日志记录级别的名称:ERROR , DEBUG , … |
2个 | 匹配上 | 如果过滤条件为真,如何记录。也许ACCEPT ,DENY 或者NEUTRAL 。默认NEUTRAL 。 |
3个 | 不匹配 | 如果过滤条件为假,如何记录。也许ACCEPT ,DENY 或者NEUTRAL 。默认NEUTRAL 。 |
让我们设置一个过滤器,只允许 level 的消息DEBUG
。下面是一个具有完整过滤器配置的示例:
<?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">
<ThresholdFilter level="DEBUG" 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>
GO TO FULL VERSION