来广营做网站公司,山东人才招聘网,网站优化建设桂林,重庆网红打卡景点排行榜slf4j 是众多日志框架接口的集合(俗称日志门面)#xff0c;它不负责具体的日志实现#xff0c;只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用#xff0c;这里主要…slf4j 是众多日志框架接口的集合(俗称日志门面)它不负责具体的日志实现只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用这里主要讲一下常用的几种
Logback 、 Log4j、Log4j2
首先看看日志级别的差别
Logback、Log4j和Log4j2都支持类似的日志级别但是它们的具体实现略有不同 Logback的日志级别按照从低到高排序为TRACE、DEBUG、INFO、WARN、ERROR。Logback还提供了一个OFF级别用于禁用所有日志记录。 Log4j的日志级别按照从低到高排序为TRACE、DEBUG、INFO、WARN、ERROR、FATAL。但是Log4j还提供了一个ALL级别用于启用所有日志记录。 Log4j2的日志级别按照从低到高排序为TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。Log4j2的日志级别与Log4j大体相同但是它还添加了一个OFF级别用于完全禁用日志记录。
可以看到常见的ERROR、WARN、INFO、DEBUG这三者都是支持的。
看看各自需要引入的jar
slf4j logback slf4j-api.jar logback-classic.jar logback-core.jarslf4j log4j slf4j-api.jar slf4j-log412.jar log4j.jarslf4j jul slf4j-api.jar slf4j-jdk14.jar也可以只用slf4j无日志实现slf4j-api.jar slf4j-nop.jar
注意到这里没有log4j2依赖jar的关系和log4j2配合需要导入log4j2的log4j-api.jar、log4j-core.jar和桥接包log4j-slf4j-impl.jar。
所谓的桥接包就是实现StaticLoggerBinder类用来连接slf4j和日志框架。因为log4j和log4j2刚开始没有StaticLoggerBinder这个类为了不改变程序结构只能重新写一个新的jar来实现StaticLoggerBinder。而logback出现slf4j之后于是在logback本身的jar中实现了StaticLoggerBinder所以就不需要桥接包。
按出现顺序逐个分析一下
Log4j
Apache Log4j 是一个非常古老的日志框架并且是多年来最受欢迎的日志框架。 它引入了现代日志框架仍在使用的基本概念如分层日志级别和记录器。
2015 年 8 月 5 日该项目管理委员会宣布 Log4j 1.x 已达到使用寿命。 建议用户使用 Log4j 1 升级到 Apache Log4j 2。
Logback
logback 是由 log4j 创始人设计的又一个开源日志组件作为流行的 log4j 项目的后续版本从而替代 log4j。
Logback 的体系结构足够通用以便在不同情况下应用。 目前logback 分为三个模块logback-corelogback-classic和logback-access。
logback-core模块为其他两个模块的基础。logback-classic模块可以被看做是log4j的改进版本。此外logback-classic 本身实现了 SLF4J API因此可以在 logback 和其他日志框架如 log4j 或 java.util.loggingJUL之间来回切换。logback-access模块与 Servlet 容器如 Tomcat 和 Jetty集成以提供 HTTP 访问日志功能。
Log4j2
Apache Log4j 2是对 Log4j 的升级它比其前身 Log4j 1.x 提供了重大改进并提供了 Logback 中可用的许多改进同时修复了 Logback 架构中的一些固有问题。
与 Logback 一样Log4j2 提供对 SLF4J 的支持自动重新加载日志配置并支持高级过滤选项。 除了这些功能外它还允许基于 lambda 表达式对日志语句进行延迟评估为低延迟系统提供异步记录器并提供无垃圾模式以避免由垃圾收集器操作引起的任何延迟。
所有这些功能使 Log4j2 成为这三个日志框架中最先进和最快的。
后面有空在讲讲标签配置的一些差异和注意事项