日志
@TOC
日志基础
日志作用
- 编程器调试代码
运营期记录信息
- 记录日常运营重要信息(峰值流量、平均响应时长……)
- 记录应用报错信息(错误堆栈)
- 记录运维过程数据(扩容、宕机、报警……)
代码中使用日志工具记录日志
添加日志记录操作
@RestController @RequestMapping("/books") public class BookController extends BaseClass{ private static final Logger log = LoggerFactory.getLogger(BookController.class); @GetMapping public String getById(){ log.debug("debug..."); log.info("info..."); log.warn("warn..."); log.error("error..."); return "springboot is running..."; } }
运行后看控制台会发现一个问题,debug
得日志没有出现,这是什么原因?其实是debug
得优先级太低,而系统默认级别是info
,所以想要看到debug
日志还需要添加一些操作
设置日志输出级别
日志设置好以后可以根据设置选择哪些参与记录。这里是根据日志的级别来设置的。日志的级别分为6种,分别是:
- TRACE:运行堆栈信息,使用率低
- DEBUG:程序员调试代码使用
- INFO:记录运维过程数据
- WARN:记录运维过程报警数据
- ERROR:记录错误堆栈信息
- FATAL:灾难信息,合并计入ERROR
一般情况下,开发时候使用DEBUG,上线后使用INFO,运维信息记录使用WARN即可
为了出现
debug
信息,可以在配置文件中添加如下信息
# debug 默认是不开启得,所以改成true就行了
debug: true
这么设置有些简单粗暴了,日志系统通常都提供了细粒度得控制
# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
level:
root: debug
root
级别是整体应用,我们可以设置范围更小得地方实现日志
logging:
level:
root: info
#设置某个包得日志级别
com.example.controller: debug
还可以对多个包设置日志级别,一个一个设置太麻烦了,可以将他们分到一个组里面,设置这个组就行了
# 设置日志级别,root表示根节点,即整体应用日志级别
logging:
#设置分组
group:
ebank: com.example.dao,com.example.controller
level:
root: info
#设置某个包得日志级别
# com.example.controller: debug
#设置分株:对某个组设置日志级别
ebank: warn
优化日志对象代码
写代码的时候每个类都要写创建日志记录对象,这个可以优化一下,使用前面用过的lombok技术给我们提供的工具类即可。
- 导入
lombok
坐标 - 在
controller
添加@Slf4j
注解
@Slf4j //这个注解替代了下面那一行
@RestController
@RequestMapping("/books")
public class BookController{
// private static final Logger log = LoggerFactory.getLogger(BookController.class); //这一句可以不写了
}
日志输出格式控制
日志已经能够记录了,但是目前记录的格式是SpringBoot给我们提供的,如果想自定义控制就需要自己设置了。先分析一下当前日志的记录格式。
对于单条日志信息来说,日期,触发位置,记录信息是最核心的信息。级别用于做筛选过滤,PID与线程名用于做精准分析。
#设置日志格式
logging:
pattern:
console: "%d %clr(%p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
日志文件
日志信息显示,记录已经控制住了,下面就要说一下日志的转存了。日志不能仅显示在控制台上,要把日志记录到文件中,方便后期维护查阅。
记录日志到文件中格式非常简单,设置日志文件名即可。
logging:
file:
name: server.log
设置完后,需要取文件夹中打开找到server.log
文件,当服务器没有关的时候,日志里的内容都存在缓冲区里,缓冲区满的时候才会存入文件中,或者服务器停了之后存入文件中
虽然使用上述格式可以将日志记录下来了,但是面对线上的复杂情况,一个文件记录肯定是不能够满足运维要求的,通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小。下面给出日志文件的常用配置方式:
logging:
logback:
rollingpolicy:
max-file-size: 3KB
file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
以上格式是基于logback
日志技术设置每日日志文件的设置格式,要求容量到达3KB以后就转存信息到第二个文件中。文件命名规则中的%d
标识日期,%i
是一个递增变量,用于区分日志文件。