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

打印 上一主题 下一主题

主题 1892|帖子 1892|积分 5676

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

步调 1:排除Logback并添加Log4j2依赖

在pom.xml中修改依赖:
  1. <dependencies>
  2.     <!-- 排除默认的Logback依赖 -->
  3.     <dependency>
  4.         <groupId>org.springframework.boot</groupId>
  5.         <artifactId>spring-boot-starter-web</artifactId>
  6.         <exclusions>
  7.             <exclusion>
  8.                 <groupId>org.springframework.boot</groupId>
  9.                 <artifactId>spring-boot-starter-logging</artifactId>
  10.             </exclusion>
  11.         </exclusions>
  12.     </dependency>
  13.     <!-- 添加Log4j2依赖 -->
  14.     <dependency>
  15.         <groupId>org.springframework.boot</groupId>
  16.         <artifactId>spring-boot-starter-log4j2</artifactId>
  17.     </dependency>
  18.     <!-- 其他依赖... -->
  19. </dependencies>
  20. <!-- 可选:添加异步日志支持(如需要高性能) -->
  21. <dependency>
  22.     <groupId>com.lmax</groupId>
  23.     <artifactId>disruptor</artifactId>
  24.     <version>3.4.4</version>
  25. </dependency>
复制代码
步调 2:创建Log4j2配置文件

在src/main/resources目录下创建log4j2-spring.xml,内容如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="WARN" monitorInterval="30">
  3.     <!-- Powered by Moshow@zhengkai.blog.csdn.net -->
  4.     <Properties>
  5.         <Property name="LOG_PATTERN_FILE">
  6.             %d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+0} [%t] %-5level %logger{36} - %msg%n
  7.         </Property>
  8.         <Property name="LOG_PATTERN_CONSOLE">
  9.             %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level} [%t] %highlight{%c{1.}.%M(%L)}: %msg%n%throwable
  10.         </Property>
  11.         <Property name="LOG_DIR" value="logs"/>
  12.         <Property name="LOG_FILE_NAME" value="sre_audit_log_dev"/>
  13.     </Properties>
  14.     <Appenders>
  15.         <!-- 控制台输出 -->
  16.         <Console name="Console" target="SYSTEM_OUT">
  17.             <PatternLayout pattern="${LOG_PATTERN_CONSOLE}" disableAnsi="false" noConsoleNoAnsi="false"/>
  18.         </Console>
  19.         <!-- 按日期滚动的文件输出 -->
  20.         <RollingFile name="RollingFile"
  21.                      fileName="${LOG_DIR}/${LOG_FILE_NAME}.log"
  22.                      filePattern="${LOG_DIR}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.log">
  23.             <PatternLayout pattern="${LOG_PATTERN_FILE}"/>
  24.             <Policies>
  25.                 <!-- 每天滚动一次 -->
  26.                 <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
  27.                 <SizeBasedTriggeringPolicy size="50 MB" />
  28.             </Policies>
  29.             <!-- 保留最近7天的日志 -->
  30.             <DefaultRolloverStrategy max="90"/>
  31.         </RollingFile>
  32.     </Appenders>
  33.     <Loggers>
  34.         <Root level="info">
  35.             <AppenderRef ref="Console"/>
  36.             <AppenderRef ref="RollingFile"/>
  37.         </Root>
  38.     </Loggers>
  39. </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的内容(本地模式),服务器则通过下令注入
  1. java -jar your-app.jar --spring.profiles.active=dev
复制代码
  1. spring:
  2.   profiles:
  3.     active: dev
复制代码
  1. logging:
  2.   config: classpath:log4j2-spring-dev.xml
复制代码
然后application-dev.yaml中指定对应的文件为log4j2-spring-dev.yaml,从而形成闭环 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表