springboot整合log4j2: gradle项目,maven项目

简介
Log4j:
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
logback:
用来log4j的一个日志框架,是slf4j的原生实现。
slf4j:
slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用(如log4j、logback、log4j2)。
log4j2:
Log4j2是log4j 1.x和logback的改进版,日志的吞吐量、性能比log4j 1.x提高了10倍,并解决了一些死锁的bug,而且配置更加简单灵活。
Log4j2中日志有六个级别:
trace:追踪,是最低的日志级别,相当于追踪程序的执行,不怎么使用
debug:调试,在开发中,一般都将其设置为最低的日志级别
info:信息,输出重要的信息,使用较多
warn:警告,有些时候,虽然程序不会报错,但是还是需要告诉程序员的
error:错误,这个在开发中也挺常用的
fatal:严重错误,这个一旦发生,程序基本上也要停止了

当日志级别设置为某个值的时候,低于它的日志信息将不会被记录,只有高于设置的级别的信息会被记录。


log4j2(gradle,springboot)

引入spring-boot-starter-log4j2依赖,创建 log4j2.xml
在这里插入图片描述springboot默认用logback日志输出 ,当我们使用log4j,为避免因包冲突导致配置文件失效,去掉springboot默认配置

在这里插入图片描述
新建配置文件 log4j2.xml 的日志
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">

    <Properties>
        <property name="basePath">${sys:user.home}/logs/api</property>
        <property name="greatestName">greatest</property>
        <property name="systemName">system</property>
        <property name="greatestPath">${basePath}/${greatestName}</property>
        <property name="systemPath">${basePath}/${systemName}</property>
        <property name="console_log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %l - %m%n</property>
        <Property name="pattern_layout">%d [%X{traceId}] [%t] %level (%F %M %L) - %msg%n</Property>
        <property name="info_fileName">${basePath}/${greatestName}-info.log</property>
        <property name="error_fileName">${basePath}/${greatestName}-error.log</property>
        <property name="system_fileName">${basePath}/${systemName}-info.log</property>
        <property name="system_error_fileName">${basePath}/${systemName}-error.log</property>
        <property name="dbName">main</property>
        <property name="dbPath">${basePath}/${dbName}</property>
        <property name="db_fileName">${basePath}/${dbName}-info.log</property>

        <!-- 日志默认压缩路径,将超过指定文件大小的日志,自动存入按"年月"建立的文件夹下面并进行压缩,作为存档 -->
        <property name="rolling_filePattern_greatestInfo_filePattern">
            ${greatestPath}/%d{yyyy-MM}/${greatestName}Info-%d{yyyy-MM-dd}-%i.log.gz
        </property>
        <property name="rolling_filePattern_greatestError_filePattern">
            ${greatestPath}/%d{yyyy-MM}/${greatestName}Error-%d{yyyy-MM-dd}-%i.log.gz
        </property>

        <property name="rolling_filePattern_systemInfo_filePattern">
            ${systemPath}/%d{yyyy-MM}/${systemName}Info-%d{yyyy-MM-dd}-%i.log.gz
        </property>

        <property name="rolling_filePattern_systemError_filePattern">
            ${systemPath}/%d{yyyy-MM}/${systemName}Error-%d{yyyy-MM-dd}-%i.log.gz
        </property>

        <property name="rolling_filePattern_db_filePattern">
            ${dbPath}/%d{yyyy-MM}/${dbName}Info-%d{yyyy-MM-dd}-%i.log.gz
        </property>

        <!-- 日志默认同类型日志,同一文件夹下可以存放的数量,不设置此属性则默认为7个,filePattern最后要带%i才会生效 -->
        <property name="rolling_max">500</property>
        <!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;
                       如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件
                       如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 -->
        <property name="rolling_timeInterval">1</property>
        <!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,
                如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am -->
        <property name="rolling_timeModulate">true</property>

        <!-- 日志默认切割的最小单位 -->
        <property name="every_file_size">20MB</property>
    </Properties>


    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${console_log_pattern}"/>
        </Console>

        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="RollingInfoFile" fileName="${info_fileName}"
                     filePattern="${rolling_filePattern_greatestInfo_filePattern}">
<!--            <JsonLayout compact="true" locationInfo="true" complete="false" eventEol="true"/>-->
            <PatternLayout pattern="${pattern_layout}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${rolling_timeInterval}" modulate="${rolling_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <!-- 设置同类型日志,同一文件夹下可以存放的数量,如果不设置此属性则默认存放7个文件 -->
            <DefaultRolloverStrategy max="${rolling_max}"/>
        </RollingFile>

        <!-- error 日志 -->
        <RollingFile name="RollingErrorFile" fileName="${error_fileName}"
                     filePattern="${rolling_filePattern_greatestError_filePattern}">
<!--            <JsonLayout compact="true" locationInfo="true" complete="false" eventEol="true"/>-->
            <PatternLayout pattern="${pattern_layout}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${rolling_timeInterval}" modulate="${rolling_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>

            <DefaultRolloverStrategy max="${rolling_max}"/>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

        <!-- 系统日志 -->
        <RollingFile name="RollingSystemFile" fileName="${system_fileName}"
                     filePattern="${rolling_filePattern_systemInfo_filePattern}">
<!--            <JsonLayout compact="true" locationInfo="true" complete="false" eventEol="true"/>-->
            <PatternLayout pattern="${pattern_layout}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${rolling_timeInterval}" modulate="${rolling_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
            <DefaultRolloverStrategy max="${rolling_max}"/>
            <Filters>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>


        <!-- 系统错误日志 -->
        <RollingFile name="RollingSystemErrorFile" fileName="${system_error_fileName}"
                     filePattern="${rolling_filePattern_systemError_filePattern}">
<!--            <JsonLayout compact="true" locationInfo="true" complete="false" eventEol="true"/>-->
            <PatternLayout pattern="${pattern_layout}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${rolling_timeInterval}" modulate="${rolling_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>

            <DefaultRolloverStrategy max="${rolling_max}"/>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>

<!--        <RollingFile name="RollingDbFileInfo" fileName="${db_fileName}"-->
<!--                     filePattern="${rolling_filePattern_systemError_filePattern}">-->
<!--            <PatternLayout pattern="${pattern_layout}"/>-->
<!--            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>-->
<!--            <Policies>-->
<!--                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->
<!--            </Policies>-->
<!--        </RollingFile>-->
        <RollingFile name="RollingDbFileInfo"
                     fileName="${db_fileName}"
                     filePattern="${rolling_filePattern_db_filePattern}">
            <PatternLayout pattern="${pattern_layout}"/>
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <DefaultRolloverStrategy max="${rolling_max}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="${rolling_timeInterval}" modulate="${rolling_timeModulate}"/>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <logger name="com.xms.mapper" level="debug" additivity="false">
            <AppenderRef ref="RollingDbFileInfo"/>
        </logger>
<!--        <logger name="org.mybatis" level="debug" additivity="false">-->
<!--            <AppenderRef ref="RollingDbFileInfo"/>-->
<!--        </logger>-->
<!--        <logger name="com.alibaba.druid" level="debug" additivity="false">-->
<!--            <AppenderRef ref="RollingDbFileInfo"/>-->
<!--        </logger>-->
        <logger name="com.xms" additivity="false">
            <AppenderRef ref="RollingInfoFile" level="info"/>
            <AppenderRef ref="RollingErrorFile" level="error"/>
            <AppenderRef ref="Console" level="info"/>
        </logger>
        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingSystemFile"/>
            <appender-ref ref="RollingSystemErrorFile"/>
        </root>
    </Loggers>
</Configuration>

在SpringBoot的配置文件里设置日志
在这里插入图片描述


log4j2(maven,springboot)

去除 spring-boot-starter-logging

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>${springboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
 </dependency>

添加spring-boot-starter-log4j2

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
    <version>${version}</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值