大家好,我是3y。在正文之前,先给各位股东汇报下austin项目进度:
总的来说,我感觉这次的反响还是不错的,虽然阅读量不高。但留言的人多了很多,也有很多人都担心我会不会鸽掉(更新一半中途就断了)
我只能说:别慌,绝对不鸽,你只管追更就好。
我已经决定每个周末都扛着电脑回家,有空就往附近的图书馆里跑(图书馆是学习的YYDS,在家的效率就是要比图书馆要低不少)
不多BB了,今天继续聊个话题:日志
01、什么是日志
所谓日志,在我理解下就是:记录程序运行时的信息
在Java最初期又或是我们初学阶段,打印日志全凭System.out.println();
这好用吗?有待商榷。
对于大部分初学者来说,好用!我想看的信息,直接在console就能看到了,这是多么地方便啊。学习Java的第一个运行结果都是由System.out.println();出来的,不需要有任何的学习成本。
对于大部分工作者来说,本地调试可以,但如果程序部署到服务器以后,那就算了。
生产环境跟本地环境是有区别的:
- 生产环境需要记录的日志会更多(毕竟是作为一个系统/项目在线上运行,不可能只打印一点点内容)
- 生产环境的日志内容需要保留至文件(作为留存,实际上不会说第一时间发现问题,很多需要查找历史日志数据)
- 生产环境的日志内容需要有一定的规范格式(至少日志记录的时间需要有吧)
- …
上面这些要求,System.out.println();都是不具备的。
所以,我们可以看到在公司里写的项目,是没有用System.out.println();记录日志的
02、Java日志体系
工作了以后,你会发现每次引入一个框架,这个框架下几乎都有对应的日志包。
我之前在公司里曾经整合过几个项目(将原有的几个工程合并到一个项目内)。
系统分久必合合久必分,当时是认为以前的同事把项目拆得过于细,造成一定的资源浪费(毕竟每个工程跑在线上至少都会部署两台线上机器),所以有段时间公司就希望我们把一些细小的项目进行合并。
至于这事做得对与错,这块我就不谈了。
在合并的过程中,最最最麻烦的就是解决依赖冲突的问题(都是Maven项目,会有Maven仲裁的问题),而这里边,最明显的就是Java日志包的问题。
如果你有那么一丢丢了解Java日志,你就应该多多少少听说过以下的名字:Log4j(log for java)、JUL(Java Util Logging)、JCL(Jakarta Commons Logging)、Slf4j(Simple Logging Facade for Java)、Logba