日志之日志理念(一)

一、前言:

​本文日志针对所有语言,日志门面的选择目前只针对java!!!学日志体系之前,我们要了解以下6点:
​1.日志是什么?
​2.日志解决了什么问题?
​3.日志文件的作用?
​4.日志该如何记录?
​5.日志门面该如何选择?
​6.日志框架该如何选择?

二、日志是什么

​日志是用来记录程序运行时的状况

三、日志解决了什么问题

​随着程序的壮大,出现不兼容的概率就会越来越大,为了了解出现不兼容情况下的真实场景,将会出现问题的地方进行记录下来,方便去改善程序,提供更好的服务

四、日志文件的作用

​日志文件通常是系统运行中生成的系统信息,描述着每个业务的运行状况。对异常的状态存在更多的信息,以及导致异常的参数,来保证场景还原,从而快速从根本解决问题

五、日志该如何记录

记录好一个日志并不容易,也不会很难,需要了解日志的特征。

日志输出情况:如果定义级别为Info,那么只有日志等级>=Info级别的日志才会进行输出

日志级别 级别意义 优先级 使用广度
ALL 所有,所有日志级别,包括定制级别 1
Trace 跟踪,指明程序运行轨迹,比DEBUG级别的粒度更细 2
Debug 调试,指明细致的事件信息,对调试应用最有用 3
Info INFO,指明描述信息,从粗粒度上描述了应用运行过程 4
Warn 警告,指明可能潜在的危险状况 5
Error ERROR,指明错误事件,但应用可能还能继续运行 6
Fatal 致命,指明非常严重的可能会导致应用终止执行错误事件 7
Off 关闭,不打印日志 8

六、日志门面该如何选择

日志门面框架目前分为两类,一类是以apache开发的jcl(Jakarta Commons Logging),一类是以qos-ch开发的SLF4J(Simple Logging Facade for Java)。
以前日志体系各异,急需一个完整的门面框架进行管理,这时apache带领jcl杀出来,但是jcl的查找机制对于现在发展而言面临淘汰状况,slf4j依赖于spi机制直接杀进日志抽象框架队伍,出现这种情况的原因是jdk1.6的spi机制产生。slf4j也自然成为了日志门面框架的必然趋势!!!
花费几分钟了解这几位功臣的贡献,这值得我们牢记!(ps:诞生时间并不代表取代时间,因为还有小伙伴在用jcl)

日志门面框架 诞生时间 意义
jcl 2001-08-02 16:27 日志混乱时期,弥补了早期日志差异话带来的影响
slf4j 2005-04-14 17:43 由于JDK1.6的spi机制的出现,导致jcl性能消耗出现了对比,时代的后继者

七、日志框架该如何选择

日志框架主要是用来进行日志输出的,日志框架也对应着其相应的日志门面,这主要和时代有关。
如何运用好各种日志框架,需要我们对他们进行基本熟悉,如下:

JCL
动态查找加载

日志框架 加载顺序(级别越低越先加载) 描述
Log4J 1 自主控制日志输出地,控制每一条日志的输出格式,通过一个配置文件灵活配置,早期流行日志
Jdk14 2 JDK4及以上,jdk自带的日志实现
Jdk13Lumberjack 3 JDK3及以上,为了向下兼容
SimpleLog 4 基础实现,JCL自带实现,不需要额外引入

SLF4J
SPI加载

日志框架 描述
Logback Logback的目的是作为流行的log4j项目的继承者,填补log4j的空白,比log4j特性更好
JDK14 JDK4及以上,jdk自带的日志实现
Log4j 自主控制日志输出地,控制每一条日志的输出格式,通过一个配置文件灵活配置,早期流行日志
Simple 基础实现,slf4j项目,需要额外引入

共性日志框架
log4j2依赖于log4j的加载器进行加载,所以可同时兼容2个日志门面框架

日志框架 描述
Log4j2 性能优于log4j,特性更多,log4j的替代品
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信