程序员的工作离不开日志。
日志就像一个笔记本,可以记录程序运行时的一些信息。
日志文件
通过日志,我们可以做很多事情。
日志的作用
1. 记录系统和接口的使用情况,比如请求日志
2. 记录和分析用户的行为,比如网站访问日志
3. 调试程序,和控制台的作用类似,但是控制台中的内容并不会保存到文件中,而日志可以长期保存。
4. 帮助我们排查和定位错误。比如在系统抛出异常时,将异常信息记录到日志,可以事后复盘。
5. 通过分析日志还能够优化代码逻辑、提升系统性能、稳定性等。
日志虽然有那么多的作用,但如果数量过多,也会让开发人员感到头疼。对于大型的系统,程序员们经常要看几千、几万行日志,常常看日志看到头晕眼花。
但是,其实处理日志是有很多技巧的,下面鱼皮分享自己和日志的故事。
故事分为 7 个阶段,从看日志看到怀疑人生,再到玩弄千万日志于股掌,鱼皮都做了哪些事情?
鱼皮和日志的爱恨情仇
第一阶段 无日志
刚开始搭建新的系统时,为了图个方便,鱼皮没有给系统接入任何的日志框架,也没有记录任何日志,整个项目非常的干净丝滑。需要调试时就直接用输出函数将信息打印在控制台,出 了异常就直接打印堆栈。
真是无事一身轻,爽 的不得了!
可惜,好景不长。在项目上线之后,突然有一天,系统出问题了,数据查不出来了,同事找上门来了。
鱼皮笑着说:“问题不大!”
然后登录服务器,进入项目目录,瞬间傻眼。
项目目录依旧干净丝滑,原来我特么根本没记日志啊!
这下好了,什么问题都查不出来。乖乖地去给项目加上日志功能吧。
第二阶段 引入日志类库
Java 语言有很多优秀的日志类库,比如 Logback、Log4j2 等,提供了很多记录和打印日志的方法,非常方便。可以直接使用其中一个类库,而无需自己实现。此处因为鱼皮的项目使用 Spring Boot 框架进行开发,直接使用其默认日志库 Logback 即可。
使用方式很简单,先添加 logback.xml 配置文件,主要配置了日志文件的存储路径和格式。Logback 框架还会自动将日志按天进行压缩,并且在一定天数后进行删除,以节约磁盘空间。最大存储天数也可以在配置文件中指定。
配置文件大概长这样:
在要打印日志的类上创建一个日志对象:
Logger logger = LoggerFactory.getLogger(MyApp.class);
然后就可以使用该对象去记录日志啦:
catch(Exception e) { logger.error("app error", e);}
加上配置文件后,启动项目,就可以看见生成的日志文件了。欧耶,下次系统再出问题,就不怕缺乏信息来排错啦!