引入log4j2并排除springboot自带的logging

        <!--引入log4j2-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!--排除掉springboot自带的logging,避免冲突-->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

log4j2.xml文件引入

方式一:application.properties文件中引入
logging.config=classpath:log4j2.xml
方式二:application.yml文件中引入
logging:
config: classpath:log4j2.xml

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<Configuration status = "WARN" monitorInterval = "300">

    <properties>
        <property name="LOG_HOME">D://</property>
    </properties>

    <!--定义所有的appender-->
    <Appenders>
        <!--appender 输出到控制台-->
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout
                    pattern="[%d] [%level] [%logger{10} %line][%thread] traceLogid:[%X{TRACE_LOG_ID}] call[%logger][%method] %msg%n"/>
        </Console>
        <!--日志文件输出 appender-->
        <!--<File name="file" fileName="${LOG_HOME}/20220905log.log">
            <PatternLayout
                    pattern="[%d] [%level] [%logger{10} %line][%thread] traceLogid:[%X{TRACE_LOG_ID}] call[%logger][%method] %msg%n"/>
        </File>-->
        <!--appender 输出到日志文件中-->
        <RollingRandomAccessFile name="accessFile" fileName="${LOG_HOME}/mylog1.log"
                                 filePattern="mylog.%d{yyyy-MM-dd}.%i.log"
                                 immediateFlush="false">
            <Filters>
                <!--只打印DEBUG及以上级别日志-->
                <!--注意此处要将级别设置为DEBUG,不然sql语句的日志打印不出来,因为sql语句的级别是DEBUG-->
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <!--日志消息的格式-->
            <PatternLayout charset="UTF-8"
                           pattern="[%d] [%level] [%logger{10} %line][%thread] traceLogid:[%X{TRACE_LOG_ID}] call[%logger][%method] %msg%n"/>

            <Policies>
                <!--每小时滚动一次-->
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <!--日志达到512MB 滚动一次-->
                <SizeBasedTriggeringPolicy size="512MB"/>
            </Policies>

            <!-- 日志文件超过最大数值,则删除最早生成的日志文件。注意%d{yyyy-MM-dd}要用年月日格式,不能加上时分秒,并且最后要有%i,这样log4j2
               才能判断出哪天一共产生几个 -->
            <DefaultRolloverStrategy max="500" />
        </RollingRandomAccessFile>

    </Appenders>

    <loggers>
        <logger level="info" name="org.apache.commons" />
        <logger level="info" name="org.apache.zookeeper" />
        <logger level="info" name="org.apache.kafka" />
        <logger level="info" name="org.apache.dubbo" />

        <logger level="info" name="org.springframework"/>
        <logger level="info" name="java.sql.ResultSet"/>

        <logger level="info" name="java.sql.PreparedStatement" />
        <logger level="info" name="java.sql" />
        <logger level="info" name="java.sql.Statement"/>
        <logger level="info" name="java.sql.Connection"/>

        <!--mabatisplus日志配置,在这里写了之后就不需要在yml文件中引入
        logging:
            level:
                com.xxx.dao.mapper: debug
        -->
        <logger level="debug" name="com.xxx.dao.mapper"
                additivity="false">
            <!-- 将SQL语句输出到控制台 -->
            <AppenderRef ref="CONSOLE" />
            <!-- 将SQL语句输出到name为accessFile 的文件中 -->
            <AppenderRef ref="accessFile" />
        </logger>

        <root level="info">
            <AppenderRef ref="CONSOLE"/>
            <AppenderRef ref="accessFile"/>
        </root>
    </loggers>
</Configuration>

注意事项:

在这里插入图片描述

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐