记录应用日志主要有三个原因 记录操作轨迹、监控系统运行状况、回溯系统故障
记录操作行为及操作轨迹数据,可以数据化的分析用户偏好,有助于优化业务逻辑。(比如抖音)
全面有效的日志系统有助于建立完善的应用监控体系,可以对服务器使用情况比如内存、cpu等使用情况,应用运行情况 如响应时间等;应用错误信息 如空指针、sql异常的监控
当系统发生线上问题时,完整的现场日志有助于工程师快速定位问题
日志框架
1. 简介
SLF4J(Simple Logging Facade For Java)及简单日志门面。主要是为了给Java提供一套标准、规范的API框架,其主要意义在于提供接口, 具体的实现可以交由其他日志框架,例如log4j2或logbak等。
SpringBoot官方spring-boot-starter-logging依赖,默认的日志实现框架是logback。
spring-boot-starter-log4j2依赖对应的日志实现框架是log4j2。
SpringBoot采用了slf4j+logback的组合形式
由于每个日志的实现框架都有自己的配置文件,所以在使用SLF4J之后,配置文件还是要使用实现日志框架的配置文件
2. 日志级别
级别 | 描述 |
---|---|
TRACE | 运行堆栈信息,使用率低 |
DEBUG | 程序员测试代码使用 |
INFO | 记录运维过程数据 |
WARN | 记录运维过程报警数据 |
ERROR | 记录错误堆栈信息 |
FATAL | 灾难信息,合并计入ERROR |
从上往下日志级别递增,日志输出是按照日志级别递减的
比如日志级别为debug,那么trace级别的日志不会输出,debug和比debug更高等级的日志级别的日志会输出
3. 编写代码
前面说到了springboot默认使用的slf4j+logback的方式,可以看图,更直观的了解下
上代码
application.yml配置,root指的是整个项目的根节点
controller层代码
serviceImpl层代码
前端访问地址
后端日志输出情况
可以看出整个项目的根节点的日志级别是debug,只有com.example.serviceImpl的日志级别是info,后台输出跟配置相符
4. 日志格式
不详细记录了,后期再补充
- text in red
+ text in green
! text in orange
# text in gray