log4j2配置按照日志级别将日志输出到不同的文件

时间:2024-03-08 12:11:36

背景

在项目中,可能会产生非常多的日志记录,为了方便日志分析,可以将日志按级别输出到指定文件。

 

log4j2.xml配置文件

        <!--将info级别的日志单独输出到info.log中-->
        <RollingFile name="INFO-LOG"  fileName="info.log">
            <Filters>
                <!--将WARN及其以上级别的日志给DENY掉-->
                <ThresholdFilter level="WARN"  onMatch="DENY"   onMismatch="NEUTRAL"/>
                <!--ACCEPT info级别的日志-->
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
        </RollingFile>
        <!--将warn级别的日志单独输出到warn.log中-->
        <RollingFile name="WARN-LOG"  fileName="warn.log">
            <Filters>
                <!--将ERROR及其以上级别的日志给DENY掉-->
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                <!--ACCEPT warn级别的日志-->
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>
        <!--将error级别的日志单独输出到error.log中-->
        <RollingFile name="ERROR-LOG" fileName="error.log">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
        </RollingFile>

注意点

重要的是,如果有多个ThresholdFilter,那么Filters是必须的。同时在Filters中,首先要过滤不符合的日志级别,把不需要的首先DENY掉,然后再ACCEPT需要的日志级别,这个次序不能搞颠倒。

 

参考资料

https://www.cnblogs.com/jessezeng/p/5144317.html