spring boot日志详解:logback与slf4j的使用
spring boot中,可以先设置日志门面(抽象层),再初始化具体实现框架。
日志门面(抽象层) | 日志实现 | |
---|---|---|
JCL、SLF4j、jboss-logging | log4j、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 依赖
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。