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

如何解决IDEA/Datagrip无法连接数据库的问题:解决方法为添加参数-Djava.net.preferIPv4Stack=true

如何解决IDEA/Datagrip无法连接数据库的问题:解决方法为添加参数-Djava.net.preferIPv4Stack=true

如何解决IDEA/Datagrip无法连接数据库的问题:解决方法为添加参数-Djava.net.preferIPv4Stack=true 引言 在开发过程中,我们常常使用集成开发环境(IDE)如 IntelliJ IDEA 或 JetBrains DataGrip 来与数据库进行交互。然而,有时可能会遇到无法连接数据库的情况,尤其是当使用新版的 IDEA 或 DataGrip 时。这种问题通常是由于网络配置或者 IDE 与数据库之间的兼容性问题引起的。 一种常见的解决办法是添加 JVM 参数 -Djava.net.preferIPv4Stack=true,以优先使用 IPv4 协议栈。这种方式能够有效解决因 IPv6 配置问题导致的数据库连接失败问题。本文将详细介绍如何通过修改 IDEA 或 DataGrip 的启动参数来解决这个问题。 文章目录 * 如何解决IDEA/Datagrip无法连接数据库的问题:解决方法为添加参数-Djava.net.

By Ne0inhk
人工智能|大模型—— 开发 ——Agent Skills设计详解

人工智能|大模型—— 开发 ——Agent Skills设计详解

一、什么是Agent Skills         在与 AI Agent 协作开发时,我们常常希望它能遵循一些特定的、可复用的操作流程,比如按照固定格式创建 Git Release、执行项目代码检查、或是生成符合团队规范的文档。OpenCode Agent Skill 提供了一种机制,允许我们将这些可复用的指令和行为封装起来,供 Agent 在需要时发现并调用。         一个 Skill 本质上是一份包含了特定指令的 Markdown 文件,它定义了一项任务的名称、描述以及具体的执行步骤。通过这种方式,我们可以将复杂的、重复性的工作流程标准化,让 Agent 能够像调用工具一样,精确、一致地执行这些预定义的任务。这不仅提升了协作效率,也确保了输出结果的规范性。         总而言之,Skills的核心价值在于:把重复的指令打包,按需加载。 二、opencode配置skill 创建一个 Skill 的过程非常直接,核心是在指定的目录中放置一个名为 SKILL.

By Ne0inhk
为什么 Agent 会成为下一个 AI 应用爆发点?如何为企业带来盈利

为什么 Agent 会成为下一个 AI 应用爆发点?如何为企业带来盈利

🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、好聊天≠能执行 2、静态问答 → 动态执行 二、什么是 Agent 1、具备感知、规划、决策、执行能力的智能体 2、核心能力 三、为什么说 Agent 会成为爆发点 1、应用能力从“问答”跃迁到“任务执行” 2、开发成本降低、生态系统成熟 3、开放模型(如 Qwen、Yi) + RAG + Tool Use 更易落地 四、典型应用场景盘点 1、

By Ne0inhk

让“小爱音箱PRO”智能起来:接入豆包AI

下面提供从 0 到 1 的完整流程,包含豆包 API 申请、MiGPT 部署、配置与使用,确保你能顺利让小爱音箱 Pro 用上豆包的强大能力。 一、准备工作(必做) 二、申请豆包 API 密钥(关键步骤) 豆包 API 需通过火山引擎方舟平台申请,以下是详细步骤: 1. 注册与实名认证 1. 访问火山引擎官网:https://www.volcengine.com/ 2. 注册账号并完成实名认证(个人 / 企业均可) 3. 登录后进入方舟大模型平台 2. 创建 API 密钥与推理接入点 1. 进入控制台 → API 密钥管理 → 点击 "

By Ne0inhk