日志配置:slf4j+log4j2

  1. pom
点击查看代码
        <!-- 排除默认日志 -->
        <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>

        <!-- 异步日志依赖 -->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.4.4</version>
        </dependency>

2.生产级别 log4j2-spring.xml

点击查看代码

<?xml
        version="1.0" encoding="UTF-8"?>
<!--status:用来指定log4j2本身的打印日志的级别,monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s-->
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="logDir">logs</Property>
        <Property name="logFile">mb</Property>
        <Property name="level">INFO</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%highlight{%level}] [%thread] %logger{36} - %msg%n"/>
            <!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
        </Console>
        <RollingFile name="File" fileName="${logDir}/${logFile}.log"
                     filePattern="${logDir}/${logFile}-%d{yyyy-MM-dd}-%i.log.gz">
            <!--日志输出格式-->
            <PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/>
            <!--满足任何一个policy即进行归档-->
            <Policies>
                <!--当前日志与开始日期不匹配(RollingFile中配置的filePattern中配置的最小时间单位不匹配时)时进行归档-->
                <TimeBasedTriggeringPolicy interval="1" modulate="false"/>
                <!--文件超过512M进行归档,SizeBasedTriggeringPolicy规定了当日志文件达到了指定的size时,触发rollover操作。size参数可以用KB、MB、GB等做后缀来指定具体的字节数,如20MB-->
                <SizeBasedTriggeringPolicy size="520MB"/>
            </Policies>
            <!--归档的文件最大数量,max参数指定了计数器的最大值。一旦计数器达到了最大值,过旧的文件将被删除。-->
            <DefaultRolloverStrategy max="100">
                <!--删除规则-->
                <Delete basePath="${logDir}" maxDepth="2">
                    <!--匹配文件规则-->
                    <IfFileName glob="*.log.gz">
                        <IfLastModified age="15d">
                            <IfAny>
                                <!--logDir下文件总大小超过5GB,进行删除-->
                                <IfAccumulatedFileSize exceeds="10GB"/>
                                <!--logDir下文件总数量超过100,进行删除-->
                                <IfAccumulatedFileCount exceeds="100"/>
                            </IfAny>
                        </IfLastModified>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    <Loggers>
        <!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。-->
        <AsyncLogger name="com.example.mybatisp" level="${level}" additivity="false">
            <AppenderRef ref="File"/>
            <AppenderRef ref="Console"/>
        </AsyncLogger>

        <AsyncLogger name="org.springframework" level="ERROR" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </AsyncLogger>

        <AsyncLogger name="org.apache.ibatis" level="DEBUG" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </AsyncLogger>

        <AsyncLogger name="com.baomidou.mybatisplus.core" level="DEBUG" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </AsyncLogger>

        <Root level="WARN">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>

    </Loggers>
</Configuration>
  1. application.yml
点击查看代码
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.demo.entity
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

logging:
  config: classpath:log4j2-spring.xml
  level:
    #这个指定你的dao层,也就是mapper文件的所在包
    org.hf.mybatisd.mapper: DEBUG
posted @ 2025-08-06 23:55  自在现实  阅读(12)  评论(0)    收藏  举报