日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节。但是,这丝毫不影响它在任何一个系统中的重要的地位。
为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以生产环境一旦出现问题,预警系统就会通过邮件、短信甚至电话的方式实施多维轰炸模式,确保相关负责人不错过每一个可能的bug。
预警系统判断疑似bug大部分源于日志。比如某个微服务接口由于各种原因导致频繁调用出错,此时调用端会捕获这样的异常并打印ERROR级别的日志,当该错误日志达到一定次数出现的时候,就会触发报警。
日志Log默认格式
Spring Boot 的默认日志输出类似于以下示例(springboot运行时控制台的输出):
1 | 2022-06-16 20:43:06.350 INFO 1036 --- [ restartedMain] .ConditionEvaluationDeltaLoggingListener : Condition evaluation unchanged |
详细介绍:
- 日期和时间:毫秒精度,易于排序。
- 日志级别:ERROR、WARN、INFO、DEBUG 或 TRACE。
- 进程标识(动态分配)。
- A — 分隔符来区分实际日志消息的开始。
- 线程名称:括在方括号中(可能会被截断以用于控制台输出)。
- 记录器名称:这通常是源类名称(通常缩写)。
- 日志消息。
日志级别大小:TRACE < DEBUG < INFO < WARN < ERROR < FATAL ,且级别是逐渐提供,如果日志级别设置为INFO,则意味TRACE和DEBUG级别的日志都看不到。如果这里设置为WARN,INFO级别的日志都不显示。
Spring Boot默认日志系统
Spring Boot默认使用LogBack日志系统,如果不需要更改为其他日志系统如Log4j2等,则无需多余的配置,LogBack默认将日志打印到控制台上。
如何将日志信息存储到文件
在本机环境,我们习惯在控制台看日志,但是线上我们还是要通过将日志信息保存到日志文件中,查询日志文件即可。