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,那么:
- 会输出的日志:
INFO、WARN、ERROR(优先级 ≥ INFO) - 会被过滤的日志:
DEBUG、TRACE(优先级 < 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(); }