常用的日志框架
- logback
- log4j
- log4j2
- commons logging
- slf4j
在spring boot中选用的是 slf4j + logback 进行日志输出。
slf4j的使用
我们知道 slf4j 是一个日志门面,具体的日志实现是由具体的日志框架实现的,比如 log4j、logback等日子框架。
如下图所示,slf4j集成日志框架需要导入的 jar 包:
当我们使用某个日志框架时,只需要在我们的系统类路径下配置对应的日志框架配置文件即可,比如使用logback日志框架,配置其配置文件logback.xml即可。
系统如何统一面向 slf4j 进行日志输出
我们在系统开发中可能想使用 slf4j + logback 进行日志输出,但是我们系统依赖的 spring、mybatis 框架可能使用的是其他日志框架,那我们如何统一面向 slf4j 进行日志输出呢?
通过这张图我们就知道如何实现:
- 系统中其他框架使用的日志框架jar排除,比如图中统一使用的slf4j+logback输出日志,但是系统依赖的框架是commons logging,此时就是排除commons logging的jar包
- 导入适配包,因为系统依赖的框架还需要日志输出,比如图中导入了 jcl-over-slf4j.jar
- 使用 slf4j + logback 进行统一日志记录
spring boot 日志关系
jar包依赖关系
从图中可以看出springboot底层给我自动适配了常见的日志框架,将其替换成 slf4j 。所以当我们引入其他框架jar包时,要排除框架本身自带的日志框架。
spring boot中的日志配置
- 给类路径下配置上日志框架的配置文件
日志框架 | 配置文件 |
---|---|
Logback | logback-spring.xml , logback.xml |
Log4j2 | log4j2-spring.xml , log4j2.xml |
-
logback-spring.xml 和 logback.xml 的区别
(1)logback.xml:直接就被日志框架识别了。
(2)logback-spring.xml :日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用 spring boot 的高级Profile功能。<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志输出格式: %d表示日期时间, %thread表示线程名, %-5level:级别从左显示5个字符宽度 %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息, %n是换行符 --> <layout class="ch.qos.logback.classic.PatternLayout"> <!--指定环境--> <springProfile name="dev"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern> </springProfile> <springProfile name="!dev"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern> </springProfile> </layout> </appender>
在application.properties文件中配置激活dev开发环境
spring.profiles.active=dev
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。