当前位置: 首页 > news >正文

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

r要将Spring Boot 3项目中的日志框架从Logback切换到Log4j2,并配置按日期滚动文件和控制台输出,请按照以下步骤操作:

步骤 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:验证配置

  1. 启动应用:检查控制台是否有日志输出。

  2. 检查文件:查看logs/app.log是否生成,且每天会自动滚动生成新文件(如app-2023-10-01.log)。

  3. 验证Lombok:确保@Slf4j注解生成的日志能正常工作。

高级配置(可选)

  • 异步日志:在配置文件中使用<AsyncLogger><AsyncRoot>提升性能。

  • 按大小滚动:在RollingFile中添加<SizeBasedTriggeringPolicy size="100 MB"/>,实现按大小滚动。

  • 多环境配置:使用Spring Profile,创建log4j2-spring-dev.xmllog4j2-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,从而形成闭环 

相关文章:

  • 深入浅出Spring-Boot-3.x.pdf
  • 游戏引擎学习第184天
  • Linux操作系统7- 线程同步与互斥7(RingQueue环形队列生产者消费者模型改进)
  • RK3568 设备树基础语法讲解
  • QLoRA和LoRA 微调
  • RK3568笔记八十一: Linux 小智AI聊天机器人移植
  • ctfshow做题笔记—栈溢出—pwn73、pwn74
  • 在 Mermaid 流程图里“驯服”quot;的魔法指南!!!
  • Maven仓库配置
  • React 组件之间的通信
  • Axure项目实战:智慧城市APP(完整交互汇总版)
  • 解析信息归属地与网络安全的关联
  • windows下安装sublime
  • 黑盒测试与白盒测试详解
  • 保姆级教程 在linux上启动Docker并且使用IntelliJ DockerCompose一键部署Springboot应用 常见命令
  • 产品生产流程优化
  • ​SVN 常用命令速查表
  • Linux中安装elasticsearch和kibana
  • 01-系统编程
  • 不同YOLO版本之间对比关系
  • 《探秘海昏侯国》数字沉浸特展亮相首届江西文化旅游产业博览交易会
  • 国际油价重挫!美股道指连跌三月,啥情况?
  • 解放日报:服务国家战略,加快建成科技创新高地
  • 人民日报钟声:国际社会应共同维护科学溯源的正确方向
  • 马上评|扩大高速免费救援范围,打消出行后顾之忧
  • 这就是上海!