spring boot中,可以先设置日志门面(抽象层),再初始化具体实现框架。

日志门面(抽象层)日志实现
JCL、SLF4j、jboss-logginglog4j、logback、JUL、log4j2

####log4j、logback、log4j2的关系

  • log4j —> logback (同一个人写,升级版本)
  • log4j —>log4j2 (apache主导,借名升级版本,不过适配性不好)

spring boot底层是spring,而spring框架默认是使用JUL(java.util.logging)

通过对pom.xml文件分析发现spring boot 针对 slf4j 进行封装,使用logback具体实现来记录日志。
在spring boot环境中,默认使用common-logging包,所以要使用其它日志框架的时候,需要手动排除common-logging的包。

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.8.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

####日志级别与配置

日志输出级别顺序:trace < debug < info < warn < error

日志配置语法:

  • logging.level.xxx(报名) = trace #指定打印级别
  • logging.file = xxx #当前目录下生成日志文件
  • logging.path = xxx #指定日志目录,与logging.file 语法互斥,使用spring.log作为默认日志文件
  • logging.pattern.console = xxx #日志在控制台输出的格式
  • logging.pattern.file = xxx #日志在文件输出的格式

指定框架的指定配置:在类路径下(resource文件目录)放置自己框架命名的配置文件(xml)即可。

比如:

  • 1、logback 日志框架可以在resource中放入命名为logback.xml 或者 logback-spring.xml 的配置文件
  • 2、log4j 日志框架要放入命名为 log4j.xml 或者 log4j-spring.xml 配置文件

区别:logback.xml 直接被日志框架识别,绕过spring框架加载;而logback-spring.xml则不被日志框架识别,而是通过spring boot框架加载后,springboot能够使用高级特性profile特性进行配置。也就是logback-spring.xml的配置支持环境选择器,即日志可以根据环境的不同进行定制输出。

总结:logback + slf4j = spring-boot-start-logging 依赖