Log4j2 + SLF4J开箱即用的配置

网上有很多关于Log4j2和SLF4J的文章,我就不再赘述了,直接上我在项目中的使用的log4j2.xml配置文件,也算是一个总结记录吧,以后随时补充进来。

Maven dependency
<dependencies>
   <!-- log4j2核心包 -->
	<dependency>
	    <groupId>org.apache.logging.log4j</groupId>
	    <artifactId>log4j-core</artifactId>
      	<version>2.11.0</version>
	</dependency>
	<dependency>
	    <groupId>org.apache.logging.log4j</groupId>
	    <artifactId>log4j-api</artifactId>
   	    <version>2.11.0</version>
	</dependency>
    <!-- 和slf4j的桥接包,里面含有slf4j核心包:slf4j-api -->
	<dependency>
	    <groupId>org.apache.logging.log4j</groupId>
	    <artifactId>log4j-slf4j-impl</artifactId>
	    <version>2.11.0</version>
	</dependency>
	
	<!-- 使用slf4j适配spring中的common-logging -->
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>jcl-over-slf4j</artifactId>
	    <version>1.7.25</version>
   </dependency>

</dependencies>
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="LOG_PATH">/data/log/project-name</Property>
        <Property name="FILE_NAME">app</Property>
        <Property name="ERROR_FILE_NAME">error</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - [%X{requestId}] %msg%n"/>
        </Console>

        <!--所有日志 -->
        <RollingRandomAccessFile name="RollingFile" fileName="${LOG_PATH}/${FILE_NAME}.log"
                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
            <!-- 日志级别过滤 -->
            <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 日志输出的格式 --> 
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-5level %logger{36} - [%X{requestId}] %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <!-- 日志文件超过 500M 生成一个新的日志文件 -->
                <SizeBasedTriggeringPolicy size="500 MB" />
            </Policies>
            <!--最多保存的文件个数 -->
            <DefaultRolloverStrategy max="5">
                    <Delete basePath="${LOG_PATH}" maxDepth="2">
                        <IfFileName glob="*.log">
                            <!--会删除 7 天以前的日志文件,但会保存最近的 5 个文件 -->
                            <IfLastModified age="7d">
                                <IfAny>
                                    <IfAccumulatedFileCount exceeds="5" />
                                </IfAny>
                            </IfLastModified>
                        </IfFileName>
                    </Delete>
              </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <!--错误日志 -->
        <RollingRandomAccessFile name="ErrorFile" fileName="${LOG_PATH}/${ERROR_FILE_NAME}.log"
                                 filePattern="${LOG_PATH}/$${date:yyyy-MM}/${ERROR_FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-5level %logger{36} - [%X{requestId}] %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="500 MB" />
            </Policies>
            <!--最多保存的文件个数 -->
            <DefaultRolloverStrategy max="30"/>
        </RollingRandomAccessFile>
        <Async name="Async">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="ErrorFile" />
        </Async>
    </Appenders>

    <Loggers>
        <!-- 这个logger会打印com.jiaobuchong包下的DEBUG日志 --> 
        <Logger name="com.jiaobuchong" level="DEBUG" additivity="false">
            <AppenderRef ref="Async" />
        </Logger>

        <!--默认打印INFO级别的日志 -->
        <Root level="INFO">
            <AppenderRef ref="Async"/>
        </Root>
    </Loggers>
</Configuration>

参考:
这篇总结得很好,涵盖log4j2常用的配置项讲解:log4j2 入门教程
日志文件 Rolling 机制看这篇就好了:Log4j2中RollingFile的文件滚动更新机制
官方文档:http://logging.apache.org/log4j/2.x/manual/appenders.html#DeleteIfFileName
详解log4j2(上) - 从基础到实战
使用Slf4j集成Log4j2构建项目日志系统的完美解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值