企业开发时候日志几个问题
1.比如开发阶段希望输出的是程序的执行流程,参数值和变量信息。产品上线以后希望输出程序运行状况,比如出现的问题出现的时间出现的位置。这些内容和格式我们要做到灵活的调整。
2.比如开发阶段我们更期望输出到控制台,便于我们观察和维护。但是产品上线后我们就没用控制台可以观察了,所以这个时候我们更希望他输出到磁盘的日志文件中,便于我们管理和维护。
3.要考虑系统性能的问题,这时候就要进行日志的优化,比如我们可以使用异步日志,异步el(没听懂啥万一)来实现,当容器中运行时间增加,日志文件也会越来越大,这个时候我们要考虑日志文件的归档和压缩的问题。
以上三个问题如果在我们的系统中使用成熟的日志框架,这些我们都不用考虑了,他都可以帮我们去实现,使用起来非常的简单。
4.还要考虑日志系统的维护,比如随着日志系统的发展,肯定会有更加优秀的日志技术出现,如果我们系统进行更新迭代的话,那么这些api也要发生修改,这显然不是我们希望所遇到的,或者说在我们当前系统下我们使用第三方技术比如spring,mybatis他们都有自己独立的日志系统,那么进行统一管理的话,api要写很多份吗,这显然也不是我们想遇到的。——这时候日志门面就站出来了,他是以面向接口的开发思想, 将现有日志框架进行统一管理和维护,只需要一套api就可以操作具体的实现了。就有点像jdbc,我们通过jdbc一套api的方法,就可以操作具体的实现,比如说我们使用mysql,后继去改成oricle,代码并不需要改变,所以我们使用日志门面技术,这一套代码可以去操作具体的日志实现,代码也不需要发生任何的修改,这是面向对象或者面向接口开发的思想。
现有日志框架有哪些
主要分为两大类:
1.日志门面:
阿帕奇的:JCL
比较火的:slf4j
2.日志实现
jdk自带的日志实现框架:JUL;
logback;
阿帕奇推出的:log4j(停止维护了),log4j2