在项目的开发中,日志是必不可少的一个记录事件的组件,不管是记录运行情况还是追踪线上问题,都
离不开对日志的分析,所以也会相应的在项目中实现和构建我们所需要的日志框架。
而市面上常见的日志框架有很多,比如:JCL、SLF4J、Jboss-logging、jUL、log4j、log4j2、logback等
等,我们该如何选择呢?
通常情况下,日志是由一个抽象层+实现层的组合来搭建的。
日志抽象层 | 日志实现层 |
---|---|
JCL(Jakarta Commons Logging)、SLF4J(Simple Logging Facade for Java)、jboss-logging | jul(java.util.logging)、log4j、logback、log4j2 |
Spring 框架选择使用了 JCL 作为默认日志输出。
而 Spring Boot 默认选择了 SLF4J 结合 LogBack
因为JSL最后更新时间很早了,jbose-logging(例如Hibernate)只有特殊的框架才会用得到
SLF4J 的使用
在开发的时候不应该直接使用日志实现类,应该使用日志的抽象层。具体参考:SLF4J 官方 。
SLF4J 官方给出了简单示例。
首先要为系统导入 SLF4J 的 jar
Logger logger = LoggerFactory.getLogger(DemoApplication.class);
下图是 SLF4J 结合各种日志框架的官方示例,从图中可以清晰的看出 SLF4J API 永远作为日志的门面,
直接应用与应用程序中
slf4j结合log4j和Spring(commons logging)实现的话,需要加入适配器的jar包(因为该两种方式诞生的时候,没有考虑到后面会有slf4j)
注意:由于每一个日志的实现框架都有自己的配置文件,所以在使用 SLF4j 之后,配置文件还是要使用实
现日志框架的配置文件。