Spring Boot使用log4j2日志框架

默认你已经搭建好spring boot框架

  1. 去除对spring-boot-starter-logging的依赖,在spring boot的jar包中,目测logging的jar包是spring-boot-starter的依赖包,所有其他对spring-boot-starter有依赖的包,包括spring-boot-starter都要去除logging,包括spring-boot-starter-test、spring-boot-starter-web、spring-boot-starter-thymeleaf、spring-boot-starter,将如下代码加入对应的dependency中
       <exclusions>
          <exclusion>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-logging</artifactId>
          </exclusion>
       </exclusions>
    
  2. 加入log4j2的jar包
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <!-- 可以指定版本号<version>2.1.1.RELEASE</version>-->
    </dependency>
  3. application.yml的配置,就是指定log4j2配置文件的位置,其他所有关于日志的就在里面配就可以了
    logging:
      config: classpath:log4j2.xml
    # application.properties里面可以写logging.config=classpath:log4j2.xml
  4. log4j2.xml配置
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration status="OFF">
        <appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <!--只接受程序中DEBUG级别的日志进行处理-->
                <!--线程信息:[%thread] 日志的五个级别:%-5level -->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %class{36} %L %M - %msg%xEx%n"/>
            </Console>
    
            <!--处理DEBUG级别的日志,并把该日志放到logs/debug.log文件中-->
            <!--打印出DEBUG级别日志,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
            <RollingFile name="RollingFileDebug" fileName="./logs/debug.log"
                         filePattern="logs/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <ThresholdFilter level="DEBUG"/>
                    <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %class{36} %L %M - %msg%xEx%n"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="100 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
                <!--经测试判断,当有新的压缩文件写入时,会判断并处理最后一次修改时间超过30天的文件,就是会保留近30天的日志文件-->
                <!--<CronTriggeringPolicy schedule="* * * * * ?"/>-->
                <DefaultRolloverStrategy>
                    <Delete basePath="logs" maxDepth="2">
                        <IfFileName glob="*/debug-*.log.gz" />
                        <IfLastModified age="30d" />
                    </Delete>
                </DefaultRolloverStrategy>
            </RollingFile>
    
            <!--处理INFO级别的日志,并把该日志放到logs/info.log文件中-->
            <RollingFile name="RollingFileInfo" fileName="./logs/info.log"
                         filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <!--只接受INFO级别的日志,其余的全部拒绝处理-->
                    <ThresholdFilter level="INFO"/>
                    <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %class{36} %L %M - %msg%xEx%n"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="50 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
                <DefaultRolloverStrategy>
                    <Delete basePath="logs" maxDepth="2">
                        <IfFileName glob="*/info-*.log.gz" />
                        <IfLastModified age="30d" />
                    </Delete>
                </DefaultRolloverStrategy>
            </RollingFile>
    
            <!--处理WARN级别的日志,并把该日志放到logs/warn.log文件中-->
            <RollingFile name="RollingFileWarn" fileName="./logs/warn.log"
                         filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
                <Filters>
                    <ThresholdFilter level="WARN"/>
                    <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                </Filters>
                <PatternLayout
                        pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %class{36} %L %M - %msg%xEx%n"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="50 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
                <DefaultRolloverStrategy>
                    <Delete basePath="logs" maxDepth="2">
                        <IfFileName glob="*/warn-*.log.gz" />
                        <IfLastModified age="30d" />
                    </Delete>
                </DefaultRolloverStrategy>
            </RollingFile>
    
            <!--处理error级别的日志,并把该日志放到logs/error.log文件中-->
            <RollingFile name="RollingFileError" fileName="./logs/error.log"
                         filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
                <ThresholdFilter level="ERROR"/>
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %class{36} %L %M - %msg%xEx%n"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="50 MB"/>
                    <TimeBasedTriggeringPolicy/>
                </Policies>
                <DefaultRolloverStrategy>
                    <Delete basePath="logs" maxDepth="2">
                        <IfFileName glob="*/error-*.log.gz" />
                        <IfLastModified age="30d" />
                    </Delete>
                </DefaultRolloverStrategy>
            </RollingFile>
        </appenders>
    
        <loggers>
            <root level="INFO">
                <!--DEBUG、INFO、WARN、ERROR、FATAL-->
                <appender-ref ref="Console"/>
                <appender-ref ref="RollingFileInfo"/>
                <appender-ref ref="RollingFileWarn"/>
                <appender-ref ref="RollingFileError"/>
                <appender-ref ref="RollingFileDebug"/>
            </root>
            <!--log4j2 自带过滤日志、已删除-->
            <!--使用druid记录日志,可参考 https://github.com/alibaba/druid/wiki/Druid中使用log4j2进行日志输出-->
            <!--打印指定Mapper接口的SQL-->
            <logger name="com.demo.dao.UserMapper" level="DEBUG" />
    
        </loggers>
    </configuration>
  5. mybatis日志指定

如上<logger name="com.demo.dao.UserMapper" level="DEBUG" />指定打印指定Mapper接口的SQL日志,name可以指定到具体接口,也可以指定到包,这就可以根据需求那些SQL可以打印,那些不需要打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值