Java SpringBoot框架Web开发实战04--使用Lockback技术进行日志管理

Java SpringBoot框架Web开发实战04--使用Lockback技术进行日志管理

日志是每个网页所必须的东西,当网站出错时,日志就可以帮我们快速查看错误,传统的systemout进行输出日志有很多缺陷。一是如果后来某一大板块不需要日志进行输出,这时候你想要修改代码要把所有的输出代码全部删除,二是这种方式不会保留日志文件,如果出现闪退现象你无法得知是哪里的错误,但是使用lockback技术就可以避免这些问题。

下面是一段完整的logback.xml代码。

<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制台输出 --> <appender name="STDOUT"> <encoder> <!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%logger显示日志记录器的名称, %msg表示日志消息,%n表示换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern> </encoder> </appender> <!-- 系统文件输出 --> <appender name="FILE"> <rollingPolicy> <!-- 日志文件输出的文件名, %i表示序号 --> <FileNamePattern>D:\file\develop\java\log\tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern> <!-- 最多保留的历史日志文件数量 --> <MaxHistory>30</MaxHistory> <!-- 最大文件大小,超过这个大小会触发滚动到新文件,默认为 10MB --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder> <!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern> </encoder> </appender> <!-- 日志输出级别 --> <root level="ALL"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration>

这段配置代码包含日志的控制台输出和系统文件输出,控制台输出和文件输出的name分别为STDOUT和FILE,配置文件代码只需要我们学会修改就可以了,其中<pattern>标签里面是输出的格式。<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>:这是日志格式模板。%d{yyyy-MM-dd HH:mm:ss.SSS} :日期时间,精确到毫秒。[%thread] :线程名称。%-5level %:日志级别(如INFO、DEBUG),左对齐占5字符宽度。%logger{50}:日志记录器名称(如类名),最大长度50字符%msg:日志消息内容。%n:换行符。

以后不想输出日志了,直接把 <root level="ALL">改为: <root level="OFF">。

文件输出代码里面也有相应的注释。

日志级别显示规则:

logback 日志级别的核心显示规则是 “级别阈值过滤”,简单来说:

当你为 Logger(日志记录器)或 Appender(输出端)设置一个「目标级别」后,只有优先级 ≥ 目标级别的日志会被输出,优先级更低的日志会被过滤掉。
示例理解

假设你将日志级别设置为 INFO,那么:

  • 会输出的日志:INFOWARNERROR(优先级 ≥ INFO)
  • 会被过滤的日志:DEBUGTRACE(优先级 < INFO)
级别优先级说明
OFF最高关闭所有日志输出(特殊级别)
ERROR错误信息,程序运行异常且无法恢复
WARN中高警告信息,潜在问题但不影响程序运行
INFO普通信息,程序正常运行的关键节点
DEBUG中低调试信息,开发阶段排查问题使用
TRACE追踪信息,比 DEBUG 更细粒度的调试内容
ALL最低开启所有日志输出(特殊级别)

接下来,我们就可以把这项技术用在我们的后端开发当中了,首先,要先在resources里面创建一个logback.xml文件,写好里面的配置文件。然后再controller里面要创建一个成员变量

 private static final Logger log = org.slf4j.LoggerFactory.getLogger(DeptController.class);

括号里面的类名要根据自己情况修改。注意这里的Logger要选择第三个,也就是slf4j的。

这行代码不管在哪个项目当中都是固定的,但是我们引入了lombok,一个注解直接搞定,就是@Slf4j

之后的日志输出就很简单了,直接在相应的功能里面log.info("你要输出的日志")就可以了。下面举一个简单的例子

 @DeleteMapping public Result delete(Integer id){ deptService.delete(id); log.info("已删除id为"+id+"的部门"); return Result.success(); }

Read more

Java 注解与反射实战:手把手实现自定义日志与参数校验注解

Java 注解与反射实战:手把手实现自定义日志与参数校验注解

前言:为什么需要自定义注解? 在日常开发中,我们经常遇到两类重复工作: 日志记录:每个重要方法都要写 "开始执行"、"参数是 xxx"、"执行结束" 的代码;参数校验:判断输入是否为 null、年龄是否在合理范围、手机号格式是否正确等。 这些工作机械且冗余,而注解 + 反射正是解决这类问题的 "银弹"—— 用注解标记需要处理的地方,用反射自动执行逻辑,实现 "一次定义,多处复用"。 本文将带你从零实现两个实用案例: 1. 自定义日志注解@Log:自动记录方法调用细节; 2. 自定义参数校验注解@NotNull、@Range:自动校验方法参数合法性。 全程实战,代码可直接运行,搭配图解帮你吃透底层逻辑。 案例一:自定义日志注解@

By Ne0inhk
【Java String】类深度解析:从原理到高效使用技巧

【Java String】类深度解析:从原理到高效使用技巧

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:【Java】内容概括 【前言】 在 Java 编程中,String 类是使用频率最高的类之一,也是初学者接触最早的引用类型之一。但正是因为其基础且常用,很多开发者往往忽略了它的底层原理和高级特性。本文将从 String 类的底层实现、核心方法到性能优化、常见误区,全方位解析 Java String 类,帮你彻底搞懂这一基础却关键的类。 文章目录: * 一、String类本质特征 * 1.String类定义 * 2.字符串创建及内存机制 * 3.字符串常量池(StringTable) * 二、String 类核心方法 * 1.字符串方法比较 * 1.1“==”比较是否引用同一个对象 * 1.2 equals

By Ne0inhk

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=GBK 新版IDEA编码格式GBK问题 maven命令Picked up JAVA_TOOL_OPTION

📋 问题概述 问题现象 在使用新版IDEA执行 Maven 构建项目时,控制台输出警告信息: Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=GBK 🔍 问题排查过程 第一阶段:初步判断与假设 初始假设:系统环境变量设置了 Java 编码为 GBK 第二阶段:环境变量验证 cmd # 检查环境变量 echo %JAVA_TOOL_OPTIONS% # 输出:%JAVA_TOOL_OPTIONS%(表示变量未显式设置) 排查结果:系统环境中并未手动设置 JAVA_TOOL_OPTIONS 变量 第三阶段:深入排查IDEA配置 怀疑方向:IDEA内部设置或配置文件指定了GBK编码 检查项包括: 1. IDEA VM Options:

By Ne0inhk

java下载安装教程(附安装包)JDK超详细图文安装教程

文章目录 * 下载JDK安装包 * java安装 * 配置Java环境变量 * IntelliJ IDEA开发工具JDK配置 * 新建项目时配置JDK * 已有项目调整JDK版本 * 通过Maven控制JDK版本 * Java开发环境常见问题解决 * 环境变量配置后java命令仍然无法识别 * 多版本JDK共存技巧 * 深入理解Java版本选择策略 本文提供最新JDK完整安装教程,从下载安装包到环境变量配置的详细流程。包含Java开发工具包的完整部署步骤,附带官方安装包下载链接,适合Java开发初学者和编程学习者快速搭建JDK开发环境。 下载JDK安装包 官网下载渠道 Java Downloads |Oracle 中国 https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows 国内高速下载链接: 如果官网下载速度慢,可以试试这个国内镜像: https://pan.quark.cn/s/296349c7d9b5 java安装 在当前目录地址栏

By Ne0inhk