日志那些事之一—java日志框架分类

  本系列日志文章主要是针对项目上遇到的日志问题,发散下思维,比较广的介绍下java中常见以及常用的日志框架,并通过实例代码演示。系列文章主要分为三大部分:

  • 了解日志的作用,了解java中常用的日志框架;
  • 不同日志框架的比较,实际项目中如何选取;
  • 具体项目中日志的使用

  本篇先描述第一个问题,什么是日志,常用的日志框架有哪些?

日志名称 日志含义 级别级数
Debug 级别最低的日志,开发人员用于测试、验证常用的日志级别,在开发阶段经常使用 level_1
Info Info信息是应用信息,生产环境上的日志级别都是info,通常打印的是一些关键节点的日志,能够根据这些日志”检索”出用户的行为路径 level_2
Warn 告警日志,非错误性日志,意味着当前的业务逻辑流程存在不合理的处理,但是也属于正常的结果,不影响正常的业务流程,可以不修复 Level_3
Error 错误性的日志,此日志的出现意味着有错误的业务流程代码出现问题,而且必须得修复 Level_4

  如上表1所述一般而言,测试环境下开发用于调试,日志配置文件为debug级别,为了不进行繁琐的日志级别变更,线上的日志配置文件级别又都设置为了info,这样,开发者在代码中可以根据需要使用日志级别,并且在不同的环境上打印不同的日志。

几种常见的日志

  1. Log4j:是最早的日志框架,是apach旗下的;
  2. Log4j2:apach旗下的关于log4j的升级版;
  3. Logback:是基于slf4j接口实现的一套日志框架组件;
  4. JUL(java utillog):仿log4j实现的日志框架,是sun旗下的,(也就是在我们普遍使用的jdk中);
  5. Commons loggin:是一套日志接口;
  6. Slf4j:也是一套日志接口;
       Commons Logging和Slf4j是日志门面(门面模式是软件工程中常用的一种软件设计模式,也被称为正面模式、外观模式。它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用)。log4j和Logback则是具体的日志实现方案。可以简单的理解为接口与接口的实现,调用这只需要关注接口而无需关注具体的实现,做到解耦;
      比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。
      如下所示图1和图2分别为log4j2、logback日志框架实现slf4j接口
    日志那些事之一—java日志框架分类_第1张图片
                   log4j2与slf4j的结合
    日志那些事之一—java日志框架分类_第2张图片
                 logback与slf4j的结合
      如下为commons logging的框架实现,在其内部基于接口Log实现了了jdk自带的log以及log4j的log,使用的时候“Log logger = LogFactory.getLog(App.class.getName())”,用户根本不知道调用的是哪一个log,当用户没有添加log4j的相关日志依赖的时候,实际上使用的是JDK自带的log,当用户添加了log4j相关的日志依赖,并且配置好了log4j.xml以及web.xml文件时,实际上使用的是log4j的log。
    日志那些事之一—java日志框架分类_第3张图片
                  commons logging接口实现

你可能感兴趣的:(项目积累)