Log4j2.xml 配置: 仅将匹配正则表达式的日志记录到文件并定时清理
以下是一个示例 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/mu1U 著作权归作者所有。请勿转载和采集!