以下是一个示例log4j2.xml配置文件,它将匹配正则表达式“com.example”和“org.apache”的日志消息打印到名为“myAppLogFile”的文件中,并且每天定时清理:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
  <Appenders>
    <RollingFile name="myAppLogFile" fileName="logs/myApp.log"
                 filePattern="logs/myApp-%d{MM-dd-yy}.log">
      <RegexFilter regex="(com\.example|org\.apache)" onMatch="ACCEPT"
                   onMismatch="DENY"/>
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
      <Policies>
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
      </Policies>
      <DefaultRolloverStrategy max="30"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="myAppLogFile"/>
    </Root>
  </Loggers>
</Configuration>

在这个配置文件中,我们使用了<RegexFilter>标签来匹配正则表达式。它的regex属性设置为“(com.example|org.apache)”表示我们要匹配以“com.example”和“org.apache”开头的类名(即日志记录器的名称)。

如果日志记录器的名称与这个正则表达式匹配,那么这条日志消息就会被接受(onMatch="ACCEPT"),否则它将被拒绝(onMismatch="DENY")。

接下来,我们定义了一个名为“myAppLogFile”的RollingFile appender。它的fileName属性设置为“logs/myApp.log”,表示日志消息将被写入名为“myApp.log”的文件中。filePattern属性设置为“logs/myApp-%d{MM-dd-yy}.log”,表示每天日志文件名将变为“myApp-MM-dd-yy.log”。

我们还定义了一个<Policies>标签,它包含一个<TimeBasedTriggeringPolicy>标签,它的interval属性设置为“1”,表示每天滚动一次日志文件。modulate属性设置为“true”,表示在滚动时调整时间戳以避免意外的文件名冲突。

最后,我们使用<DefaultRolloverStrategy>标签来定义滚动日志文件的默认策略。它的max属性设置为“30”,表示最多保存30个日志文件,旧文件将被删除。

<Loggers>标签中,我们将根日志记录器的级别设置为“info”,并将它的输出目标设置为我们刚刚定义的“myAppLogFile” appender。这意味着所有符合正则表达式的日志消息都将被写入名为“myApp.log”的文件中。

log4j2xml配置只打印匹配某正则表达式的相关日志到文件并定时清理

原文地址: https://www.cveoy.top/t/topic/6RM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录