一,Java日志组件

1,日志框架

  • (java.util.logging)Java 自带的日志框架,

  • (Apache的开源日志框架),

  • (Logback Project)Log4j 的继承者,目前最为流行的日志框架,推荐使用,

2,日志抽象层

    日志抽象层是基于开发的一套统一日志接口,其底层日志组件实现可以是上述日志框架中的任何一个。这样做的好处是下层日志组件的实现对应用层的日志操作透明,使得应用层的日志操作更加灵活且可以随时切换底层实现。常见的日志抽象层如下:

  • (JCL,是  项目下的一个组件,该项目的主要目的是提供一些高度可重用的Java组件类)

  • (目前较为流行的抽象层,推荐使用)

二,Spring boot中日志组件使用

    Spring boot 1.3.x,1.4.x,1.5.x 版本下均使用 spring-boot-starter-logging 来配置日志组件依赖,查看其 pom 文件可以发现如下依赖项

   
      
ch.qos.logback
      
logback-classic
   
   
      
org.slf4j
      
jcl-over-slf4j
   
   
      
org.slf4j
      
jul-to-slf4j
   
   
      
org.slf4j
      
log4j-over-slf4j
   

    通过查看依赖项可以发现,实际上 Spring boot 的日志组件使用 SLFJ 作为抽象层,底层支持全部的日志组件实现,同时又通过 jcl-over-slf4j 包对基于 JCL 抽象层的日志内容重定向到 SLFJ 来达到统一实现。至于实际项目要如何选择底层日志框架,在 Spring boot 的文档中已经给出了具体方法,详情可查看。通常情况下,我们直接使用 logback 实际上就对了,这样不用再做额外的其它依赖加载操作。

1,Spring boot 中日志配置

        

    如果想更加自主的配置 logback 组件,根据 Spring boot 文档,我们只需要在项目的 classpath 目录下增加一个 logback-spring.xml 配置文件,然后根据 logback ,同时参考 Spring boot 项目的 org/springframework/boot/logging/logback/base.xml 文件就可以做出我们自己想要的配置。

    

    这种方式适用于简单的日志配置,对于开发调试很有帮助,可以快速的帮我们更改日志级别,同时还可以精细的控制打印日志的类,包括数据库等。

2,Spring boot 非组件类中使用日志组件

    像下面代码这样,我们首先在类中获取到 SLFJ 的 Logger 实例,然后就可以调用其中的方法打印日志了,最终日志信息就会按我们配置的那样,输出到指定的位置。

import org.slf4j.Logger;import org.slf4j.LoggerFactory;private static final Logger log = LoggerFactory.getLogger(CLASS.class);