Java的日志门面框架和日志实现框架

计算机系统中,日志无处不在,日志的作用不言而喻,这篇文章主要就是用来讲述和记录学习Java中的日志。

一、日志的作用

日志记录了系统行为的时间、地点、状态等相关信息,能够帮助我们了解并监控系统状态,在发生错误或者接近某种危险状态时能够及时提醒我们处理,同时在系统产生问题时,能够帮助我们快速的定位、诊断并解决问题。

二、常用日志门面框架

门面是Facade(外观模式)的实现,也称为门面模式,是对内部多个子系统的封装,并对外提供一套统一的使用接口,从而屏蔽各个子系统在使用上的不同,大大降低了系统的使用难度,同时提高了系统的可维护性和扩展性;实际上真正干活的还是是内部的子系统;就像给这些子系统加了一层装饰,Facede也得名于此。
在这里插入图片描述
1.JCL(commons-logging)
commons-logging:apache logging抽象日志工具,一般搭配log4j1/2使用
spring-jcl:Spring自己的commons-logging同名类日志,Spring内部的日志调用的都是commons-logging包,优先选择Logj
jcl-over-slf4j:slf4j提供的commons-logging同名日志类,通过同名类的方式替换实现方式为slf4j

2.SLF4j
slf4j-api:Slf4j提供的日志抽象接口,不包含实现,具体使用何种日志实现需要引入对应的实现包
slf4j-jdk14:Slfj的jdk日志实现包
slf4j-log4j12:Slf4j的log4j1/2实现包

三、常用日志实现框架

1.Log4j
官方文档:

Log4j has three main components: loggers, appenders and layouts. These
three types of components work together to enable developers to log
messages according to message type and level, and to control at
runtime how these messages are formatted and where they are reported.

Log4j三大组件:loggers, appenders 和layouts
Logger: 日志记录器,日志记录的核心类,用于输出不同日志级别的消息。
Appender: 日志输出目标,用于指定日志输出的目的地,如控制台、文件等等。
Layout: 日志格式化器,用于指定日志按照什么格式输出,是日志输出的格式化器。

2.Log4j 2
3.Logback
4.Jul

四、日志级别

(1)FATAL(致命)
  表示需要立即被处理的系统级错误。当该错误发生时,表示服务已经出现了某种程度的不可用,系统管理员需要立即介入。这属于最严重的日志级别,因此该日志级别必须慎用,如果这种级别的日志经常出现,则该日志也失去了意义。通常情况下,一个进程的生命周期中应该只记录一次FATAL级别的日志,即该进程遇到无法恢复的错误而退出时。当然,如果某个系统的子系统遇到了不可恢复的错误,那该子系统的调用方也可以记入FATAL级别日志,以便通过日志报警提醒系统管理员修复;
(2)ERROR(错误)
  该级别的错误也需要马上被处理,但是紧急程度要低于FATAL级别。当ERROR错误发生时,已经影响了用户的正常访问。从该意义上来说,实际上ERROR错误和FATAL错误对用户的影响是相当的。FATAL相当于服务已经挂了,而ERROR相当于好死不如赖活着,然而活着却无法提供正常的服务,只能不断地打印ERROR日志。特别需要注意的是,ERROR和FATAL都属于服务器自己的异常,是需要马上得到人工介入并处理的。而对于用户自己操作不当,如请求参数错误等等,是绝对不应该记为ERROR日志的;
(3)WARN(警告)
  该日志表示系统可能出现问题,也可能没有,这种情况如网络的波动等。对于那些目前还不是错误,然而不及时处理也会变为错误的情况,也可以记为WARN日志,例如一个存储系统的磁盘使用量超过阀值,或者系统中某个用户的存储配额快用完等等。对于WARN级别的日志,虽然不需要系统管理员马上处理,也是需要及时查看并处理的。因此此种级别的日志也不应太多,能不打WARN级别的日志,就尽量不要打;
(4)INFO(消息)
  该种日志记录系统的正常运行状态,例如某个子系统的初始化,某个请求的成功执行等等。通过查看INFO级别的日志,可以很快地对系统中出现的 WARN,ERROR,FATAL错误进行定位。INFO日志不宜过多,通常情况下,INFO级别的日志应该不大于TRACE日志的10%;
(5)DEBUG(调试) or TRACE
  这两种日志具体的规范应该由项目组自己定义,该级别日志的主要作用是对系统每一步的运行状态进行精确的记录。通过该种日志,可以查看某一个操作每一步的执行过程,可以准确定位是何种操作,何种参数,何种顺序导致了某种错误的发生。可以保证在不重现错误的情况下,也可以通过DEBUG(或TRACE)级别的日志对问题进行诊断。需要注意的是,DEBUG日志也需要规范日志格式,应该保证除了记录日志的开发人员自己外,其他的如运维,测试人员等也可以通过 DEBUG(或TRACE)日志来定位问题。

log4j定义了8个级别,优先级从高到低依次为:
OFF>FATAL> ERROR> WARN> INFO> DEBUG> TRACE> ALL

日志系统内容巨大,后续随着学习深入进行补充!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值