springboot 日志管理logback切换log4j2

springboot 日志管理logback切换log4j2

前言

早期项目中,使用log4j比较多,不过在微服务相较比较流行的前提下,大家都在使用springboot,springboot默认的日志管理是logback,所以没有特别的要求,springboot项目用的都是logback日志管理,由于性能原因,很多人想用log4j2替换logback,觉得logback的性能没有log4j2好,这个是有实验数据证明的,日志框架的对比图如下:
在这里插入图片描述
从以上数据得到 log4j2 的性能明显是最好的,追求性能的项目就会将springboot默认的日志管理logback替换成log4j2。下面就说说替换的过程。
分两步,包引用替换,配置文件替换。

引用包替换

在springboot 中默认的日志管理就是logback,所以要换成log4j2,则需要剔除原来的日志包引用。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

包切换之后呢,确定一下classpath下引用的包中是否还存在logback的包,还有spring-boot-starter-log4j2的包是否在classpath下。确保无误后再对改造配置文件。

配置文件替换

创建log4j2.xml文件,这个文件会自动扫描到项目中,也可以在yml文件配置。
log4j2.xml配置详情如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

    <!-- 第一全局参数信息 -->
    <Properties>
        <property name="LOG_PATTERN"
                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- %style{[%t]}{bright,magenta} %highlight{%-5level}{ERROR=Bright RED, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White} %logger{36}.%M - %msg%n"/>
        <!-- debug 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="DEBUG_FILE_PATH_ING" value="../logs/app_debug.log"/>
        <property name="DEBUG_FILE_PATH_ED" value="../logs/app_debug-%d{yyyy-MM-dd}.%i.log"/>

        <!-- info 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="INFO_FILE_PATH_ING" value="../logs/app_info.log"/>
        <property name="INFO_FILE_PATH_ED" value="../logs/app_info-%d{yyyy-MM-dd}.%i.log"/>

        <!-- error 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="ERROR_FILE_PATH_ING" value="../logs/app_error.log"/>
        <property name="ERROR_FILE_PATH_ED" value="../logs/app_error-%d{yyyy-MM-dd}.%i.log"/>

        <!-- warn 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="WARN_FILE_PATH_ING" value="../logs/warn_error.log"/>
        <property name="WARN_FILE_PATH_ED" value="../logs/warn_error-%d{yyyy-MM-dd}.%i.log"/>

        <!-- 日志文件最大文件大小全局配置,一天之内最大文件产生数量全局配置 -->
        <property name="MAX_FILE_SIZE" value="100MB"/>
        <property name="MAX_FILE_NUM" value="30"/>
    </Properties>

    <appenders>
        <!-- 控制台输出日志信息 -->
        <console name="Console_Log" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </console>

        <!-- debug日志文件输出日志信息 -->
        <RollingFile name="Debug_File" fileName="${DEBUG_FILE_PATH_ING}" filePattern="${DEBUG_FILE_PATH_ED}">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

        <!-- info日志文件输出日志信息 -->
        <RollingFile name="Info_File" fileName="${INFO_FILE_PATH_ING}" filePattern="${INFO_FILE_PATH_ED}">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

        <!-- warn日志文件输出日志信息 -->
        <RollingFile name="Warn_File" fileName="${ERROR_FILE_PATH_ING}" filePattern="${ERROR_FILE_PATH_ED}">
            <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

        <!-- error日志文件输出日志信息 -->
        <RollingFile name="Error_File" fileName="${ERROR_FILE_PATH_ING}" filePattern="${ERROR_FILE_PATH_ED}">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

    </appenders>

    <!--配置总的日志监听级别-->
    <loggers>
        <root level="DEBUG">
            <appender-ref ref="Console_Log"/>
            <appender-ref ref="Debug_File"/>
            <appender-ref ref="Info_File"/>
            <appender-ref ref="Error_File"/>
        </root>
    </loggers>
</configuration>

以上的就包含了console,debug,info,warn,error日志的输出,对于大部分的简单的日志输出是够用了,logback相关的配置可以删除了,在自己的项目测试过是有效的,有疑问的话,可以评论,看到了会回复。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值