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

如何在 Spring Boot 项目中使用 @Slf4j 注解结合 Logback 进行系统日志管理

1. 添加依赖

添加 Logback 依赖

Spring Boot 默认使用 Logback 作为日志框架,因此通常不需要额外添加 Logback 依赖。如果你的项目中没有 Logback,可以在 pom.xml 文件中添加以下依赖:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
</dependency>
添加 Lombok 依赖

为了使用 @Slf4j 注解,需要添加 Lombok 依赖。在 pom.xml 文件中添加以下内容:

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version> <!-- 请使用最新版本 --><scope>provided</scope>
</dependency>

2. 使用 @Slf4j 注解

在类中使用 @Slf4j

在你的类中使用 @Slf4j 注解,Lombok 会自动为你生成一个 Logger 实例。示例如下:

import lombok.extern.slf4j.Slf4j;@Slf4j
public class Example {public static void main(String[] args) {log.debug("This is a debug message");log.info("This is an info message");log.warn("This is a warn message");log.error("This is an error message");}
}

3. 配置 Logback

创建 logback-spring.xml 文件

src/main/resources 目录下创建 logback-spring.xml 文件。这个文件用于配置 Logback 的日志策略。以下是一个示例配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 定义日志文件的存储路径 --><property name="LOG_DIR" value="logs"/><!-- 控制台日志输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 文件日志输出 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_DIR}/app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_DIR}/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxHistory>30</maxHistory><totalSizeCap>50GB</totalSizeCap></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>500MB</maxFileSize></triggeringPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 根日志记录器 --><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="FILE"/></root>
</configuration>

4. 日志级别控制

application.propertiesapplication.yml 中配置日志级别

你可以在 application.propertiesapplication.yml 文件中配置日志级别。例如:

# application.properties
logging.level.root=INFO
logging.level.com.example=DEBUG

或者在 application.yml 文件中:

logging:level:root: INFOcom.example: DEBUG

5. 多环境配置

使用 <springProfile> 标签

Logback 支持多环境配置,你可以使用 <springProfile> 标签为不同环境配置不同的日志策略。例如:

<configuration><property name="LOG_DIR" value="logs"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_DIR}/app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_DIR}/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxHistory>30</maxHistory><totalSizeCap>50GB</totalSizeCap></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>500MB</maxFileSize></triggeringPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><springProfile name="dev"><root level="DEBUG"><appender-ref ref="STDOUT"/><appender-ref ref="FILE"/></root></springProfile><springProfile name="prod"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="FILE"/></root></springProfile>
</configuration>

6. 日志脱敏

脱敏日志信息

在记录日志时,可能需要对某些敏感信息进行脱敏处理。例如,可以使用正则表达式或自定义方法对日志内容进行处理。以下是一个简单的示例:

import lombok.extern.slf4j.Slf4j;@Slf4j
public class Example {public static void main(String[] args) {String sensitiveData = "1234567890";String maskedData = maskSensitiveData(sensitiveData);log.info("Sensitive data: {}", maskedData);}private static String maskSensitiveData(String data) {if (data == null) {return null;}return data.replaceAll("(?<=\\w{3})\\w(?=\\w{3})", "*");}
}

7. 异步日志处理

使用异步日志

对于高并发系统,可以使用异步日志处理来提高性能。Logback 提供了 AsyncAppender 来实现异步日志输出。以下是一个示例配置:

<configuration><property name="LOG_DIR" value="logs"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_DIR}/app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_DIR}/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxHistory>30</maxHistory><totalSizeCap>50GB</totalSizeCap></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>500MB</maxFileSize></triggeringPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="FILE"/><queueSize>512</queueSize><neverBlock>true</neverBlock></appender><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="ASYNC"/></root>
</configuration>

8. 最佳实践

日志文件路径

确保日志文件路径(如 logs 目录)在服务器上存在,或者在配置文件中指定正确的路径。

日志级别控制

在生产环境中,建议将日志级别设置为 INFO 或更高,以避免过多的日志输出影响性能。

http://www.dtcms.com/a/536763.html

相关文章:

  • SQLite 事务
  • 第 1 章 JVM 和 Java 体系架构_java 字节码
  • MarketUP营销自动化核心方法:从数据驱动到全链路增
  • 沙田镇仿做网站网站价格
  • 信创背景下,中职计算机网络专业人才培养方案探讨
  • 且网站制作开源系统有哪些
  • AR智能巡检:电力运维的“透视眼”与“超级大脑”
  • 漳州电脑网站建设西安市建设网
  • 从冷换仓到热追踪:项目方如何在不暴露风险的前提下守住主动权
  • 机器人运动控制中的 Actor-Critic 强化学习预训练
  • [人工智能-大模型-97]:大模型应用层 - 随着技术的发展,软件工程与软件开发过程提效演进阶段(工具化 → 流程化 → 智能化)和未来的展望。
  • Qt从入门到放弃学习之路(1)
  • QRingBuffer:Qt内部高效环形缓冲区
  • 单位如何做网站宣传高端网站建设专业营销团队
  • 建设企业网站步骤上海做网站的公司是什么
  • 系统接口对接如何设计预防处理系统异常?
  • LeetCode算法日记 - Day 85: 等差数列划分
  • Maven相关
  • 京东商品视频API:通过商品id商品链接获取商品的视频url
  • Maven快速上手笔记
  • 手机免费制作网站模板免费下载台州网站公司那里好
  • 企业网站哪家好网站流量超标
  • 钢结构网站建设网站建设必备
  • 数据分析综合应用实战:从统计分析到机器学习预测
  • 网站 源码 下载色无极网站正在建设中
  • 【测试理论和实践 2.测试概念】
  • 算法 day 36
  • 【论文阅读】图数据库 Survey: Graph Databases
  • 长沙优化网站关键词合肥政务新区建设局网站
  • 化学网站定制简网app工场怎么创app