花瓣小跑 发表于 2025-3-27 11:08:14

SpringBoot 3+ Lombok日记框架从logback改为Log4j2

r要将Spring Boot 3项目中的日记框架从Logback切换到Log4j2,并配置按日期滚动文件和控制台输出,请按照以下步调操作:
https://i-blog.csdnimg.cn/direct/c4a2fce06130409e97ce3b994b9cc5cf.png
步调 1:排除Logback并添加Log4j2依赖

在pom.xml中修改依赖:
<dependencies>
    <!-- 排除默认的Logback依赖 -->
    <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>

    <!-- 添加Log4j2依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    <!-- 其他依赖... -->
</dependencies>

<!-- 可选:添加异步日志支持(如需要高性能) -->
<dependency>
    <groupId>com.lmax</groupId>
    <artifactId>disruptor</artifactId>
    <version>3.4.4</version>
</dependency> 步调 2:创建Log4j2配置文件

在src/main/resources目录下创建log4j2-spring.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <!-- Powered by Moshow@zhengkai.blog.csdn.net -->
    <Properties>
      <Property name="LOG_PATTERN_FILE">
            %d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+0} [%t] %-5level %logger{36} - %msg%n
      </Property>
      <Property name="LOG_PATTERN_CONSOLE">
            %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level} [%t] %highlight{%c{1.}.%M(%L)}: %msg%n%throwable
      </Property>
      <Property name="LOG_DIR" value="logs"/>
      <Property name="LOG_FILE_NAME" value="sre_audit_log_dev"/>
    </Properties>

    <Appenders>
      <!-- 控制台输出 -->
      <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN_CONSOLE}" disableAnsi="false" noConsoleNoAnsi="false"/>
      </Console>

      <!-- 按日期滚动的文件输出 -->
      <RollingFile name="RollingFile"
                     fileName="${LOG_DIR}/${LOG_FILE_NAME}.log"
                     filePattern="${LOG_DIR}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="${LOG_PATTERN_FILE}"/>
            <Policies>
                <!-- 每天滚动一次 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="50 MB" />
            </Policies>
            <!-- 保留最近7天的日志 -->
            <DefaultRolloverStrategy max="90"/>
      </RollingFile>
    </Appenders>

    <Loggers>
      <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
      </Root>
    </Loggers>
</Configuration>
步调 3:验证配置


[*] 启动应用:检查控制台是否有日记输出。
[*] 检查文件:查看logs/app.log是否天生,且每天会自动滚动天生新文件(如app-2023-10-01.log)。
[*] 验证Lombok:确保@Slf4j注解天生的日记能正常工作。
高级配置(可选)



[*] 异步日记:在配置文件中使用<AsyncLogger>或<AsyncRoot>提升性能。
[*] 按大小滚动:在RollingFile中添加<SizeBasedTriggeringPolicy size="100 MB"/>,实现按大小滚动。
[*] 多环境配置:使用Spring Profile,创建log4j2-spring-dev.xml和log4j2-spring-prod.xml。
常见问题



[*] 依赖冲突:若启动时报SLF4J绑定冲突,检查是否遗漏排除spring-boot-starter-logging。
[*] 配置路径:确保配置文件定名为log4j2-spring.xml并放在src/main/resources下。
[*] 时区问题:滚动时间基于服务器时区,可用<TimeBasedTriggeringPolicy timeZone="UTC"/>指定时区。
多环境配置

application.yaml中指定active的内容(本地模式),服务器则通过下令注入
java -jar your-app.jar --spring.profiles.active=dev spring:
profiles:
    active: dev logging:
config: classpath:log4j2-spring-dev.xml 然后application-dev.yaml中指定对应的文件为log4j2-spring-dev.yaml,从而形成闭环 
https://i-blog.csdnimg.cn/direct/f14a7b34252246c8b65d15c599182e28.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SpringBoot 3+ Lombok日记框架从logback改为Log4j2