log4j2xml配置只打印匹配某正则表达式的相关日志到文件并定时清理
以下是一个示例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”的文件中。
原文地址: https://www.cveoy.top/t/topic/6RM 著作权归作者所有。请勿转载和采集!