springboot3.4.5 log4j2 日志配置

一、引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</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>

二、配置文件(文件名:log4j2-spring.xml)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Property>
        <Property name="LOG_DIR">logs</Property>
        <Property name="APP_NAME">demo-app</Property>
    </Properties>

    <Appenders>
        <!-- 控制台输出 -->
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>

        <!-- 文件滚动日志 -->
        <RollingFile name="File" fileName="${LOG_DIR}/${APP_NAME}.log"
                     filePattern="${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
            <!-- 保留最近10天的日志 -->
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!--全局默认设置-->
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>

        <!-- 特定包或类的日志级别   MyBatis SQL 日志(DEBUG 级别)-->
        <Logger name="com.example.mapper" level="debug" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Logger>
    </Loggers>
</Configuration>

三、使用

1、类上面加注解 @Slf4j

2、语法

log.info("{},你好,{}", "小明", "小黑");
log.info("%s,你好,%s".formatted( "小明", "小黑"));

 四、配合yaml使用

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <!-- 改用 Spring 占位符,从 application.yml 读取配置 -->
        <Property name="LOG_PATTERN">${logging.pattern: %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n}</Property>
        <Property name="LOG_DIR">${logging.path:logs}</Property>
        <Property name="APP_NAME">${spring.application.name:demo-app}</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <RollingFile name="File" fileName="${LOG_DIR}/${APP_NAME}.log"
                     filePattern="${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="${logging.file.max-history:10}"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="${logging.level.root:info}">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
        <!-- 多环境适配:开发环境 debug,生产环境 info -->
        <Logger name="com.example.mapper" level="#{springProfile('dev') ? 'debug' : 'info'}" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Logger>
    </Loggers>
</Configuration>

 

 

# application.yml
spring:
  application:
    name: demo-app # 对应 LOG4J2 中的 APP_NAME
logging:
  path: ./logs # 对应 LOG_DIR
  level:
    root: info
    com.example.mapper: debug # 开发环境
  file:
    max-history: 10 # 日志保留天数
  pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"

 

posted @ 2025-05-08 10:30  市丸银  阅读(192)  评论(0)    收藏  举报