CodeGym /Java 课程 /模块 3 /Log4j 中的日志过滤器

Log4j 中的日志过滤器

模块 3
第 5 级 , 课程 4
可用

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个 匹配上 如果过滤条件为真,如何记录。也许ACCEPTDENY或者NEUTRAL。默认NEUTRAL
5个 不匹配 如果过滤条件为假,如何记录。也许ACCEPTDENY或者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个 匹配上 如果过滤条件为真,如何记录。也许ACCEPTDENY或者NEUTRAL。默认NEUTRAL
4个 不匹配 如果过滤条件为假,如何记录。也许ACCEPTDENY或者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个 匹配上 如果过滤条件为真,如何记录。也许ACCEPTDENY或者NEUTRAL。默认NEUTRAL
3个 不匹配 如果过滤条件为假,如何记录。也许ACCEPTDENY或者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>
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION