Logback,SLF4J,Log4J2。了解它们并学习如何使用。(翻译)
背景
如果您正在或在任何Java项目上工作,则可能已记录了一些debug,error或info语句以进行调试或跟踪。通过将库记录到磁盘或其他某种介质上的文件中来写这些语句。
日志记录是任何项目的关键方面,因此已经编写了各种框架。一些Java日志记录框架包括Log4j,logback,Apache通用日志记录,java.util.Logger等。所有这些日志记录器都将日志记录到文件或其他指定的介质中。
什么是SLF4J
SLF4j代表Java的简单日志记录外观。顾名思义,它是一个外观库,为log4j,logback和java.util.logger等日志记录库提供了抽象。而且不要做实际的记录。
因此,针对Java的“基本上简单的日志记录外观”可以用作各种日志记录框架的简单外观或抽象,从而允许最终用户在部署时插入所需的日志记录框架。
Log4j,Logback和java.util.Logger是日志记录库,它们实际编写日志并具有各自的优缺点。作为行业标准的是Log4j2和logback。Log4j1.x已于2015年弃用。
因此出现了一个问题,为什么要使用slf4j而不是直接使用log4j2或logback?
我们可以直接使用log4j2而不使用slf4j。但是您现在已锁定到log4j2库。因此,将来如果您想移至其他任何日志记录库。您必须转到所有Java文件并更改记录器语句。
您已经开发了要与大量人员共享的库或中间件。现在,他们还将使用具有自己的日志记录库的Log4j2,而不是对库和App使用通用的日志记录框架。
请记住,SLF4J不能替代Log4j;它只是一个门面。如果要开发库或中间件,请使用SLF4J,使用库的开发人员将根据其要求提供任何实现。
使用SLF4J作为,您的项目和记录器之间的耦合松散
如果您直接在代码中使用记录器,则您的代码可以直接访问特定于记录器的类。例如,如果使用Log4j,则应使用以下语句在所有类中检索logger的实例。
import org.apache.log4j.Logger;
static final Logger LOGGER = Logger.getLogger(MyClass.class);
假设如果出于某些奇怪的原因要用JDK logger替换Log4j2,则必须打开所有9,836个Java类,并用JDK logger替换上面的语句。
如果将Log4j2与SLF4J一起使用,则唯一需要的是用 JDK记录器绑定替换Log4j2 JAR文件(或maven依赖项)。您不想触摸任何源文件来替换记录器。
因此,现在您可以看到如果使用SLF4j,使用不同的日志记录库是多么容易。我们只是添加了log4j2 jar和SLF4j与Log4j2的绑定。它开始使用log4j2作为记录器。我们还必须添加log4j2.xml进行配置。
因此,基本上,我们必须指定要使用的记录器的绑定,并且可以使用相应的记录器实现
因此,基本上,通过使用SLF4J和Various Bridges,我们可以使用自己想要的记录器实现。
翻译原文
Logback,SLF4J,Log4J2。了解它们并学习如何使用。(翻译)的更多相关文章
- Spring Boot(十)Logback和Log4j2集成与日志发展史
一.简介 Java知名的日志有很多,比如:JUL.Log4j.JCL.SLF4J.Logback.Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看. 1.1 ...
- 拨云见日,彻底弄清楚Java日志框架 log4j, logback, slf4j的区别与联系
log4j 以及 logback, slf4j 官网 日志框架的困惑 作为一个正常的项目,是必须有日志框架的存在的,没有日志,很难追踪一些奇奇怪怪的系统问题. 但是,我们经常在项目的依赖中,见到奇奇怪 ...
- 007-log-log4j2、slf4j+log4j2
一.概述 而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的. 根本原因在于log4j2使用了LMAX, 一个无锁的线程间通信库代替了, logback和log4j之前的队列. 并发性 ...
- java日志管理 - slf4j+log4j2
1 . 概述 1.1 日志框架实现 log4j是apache实现的一个开源日志组件: logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j ...
- SpringBoot系列(十三)统一日志处理,logback+slf4j AOP+自定义注解,走起!
往期精彩推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)we ...
- log4j+logback+slf4j+commons-logging的关系与调试(转)
log4j+logback+slf4j+commons-logging的关系与调试 从Log4j迁移到LogBack的理由 http://www.tuicool.com/articles/beeeYv ...
- 使用 logback + slf4j 进行日志记录
此处主要介绍maven web工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在).La ...
- slf4j+log4j2模式的日志搭建
前言:今天打算为大家介绍一下我们我们在项目中必须得有的一个部分——日志!是的,就是那些让我们看着头疼的东西~~~好的日志可以帮助团队成员快速发现并解决问题,用好了可以大幅度提高代码缺陷修复效率!言归正 ...
- logback log4j log4j2 性能实测
logback log4j log4j2 性能实测 转载: https://blog.souche.com/logback-log4j-log4j2shi-ce/ 日志已经成为系统开发中不可或缺的一部 ...
- SpringBoot日志logback-spring.xml分环境log4j logback slf4j区别 springboot日志设置
转载. https://blog.csdn.net/qianyiyiding/article/details/76565810 springboot按照profile进行打印日志log4j logba ...
随机推荐
- 树形dp(最小支配集)
http://poj.org/problem?id=3659 #include<iostream> #include<cstring> #include<algorith ...
- 在CMD中操作mysql数据库出现中文乱码解决方案
百度了一下..有说将cmd字符编码用chcp命令改为65001(utf8字符编码),可这样之后根本无法输入中文,查询出的中问结果依旧乱码 其实,只要保证cmd客户端和MySQL两者编码一致即可. 但现 ...
- 无标定量|有标定量|谱图计数|XIC|AMT数据库|RT对对齐|母离子|子离子|SILVER|SRM|iBAQ|APEX|差异蛋白筛选|MaxQuant|PANDA|C-HPP
生物医学大数据-蛋白质定量 现今肽段定量效率存在巨大差异.比如相同质量蛋白质,但是肽段和蛋白信号不均一,在物理条件一致时,仅有70%的重复率,并且当重复次数变多时,overlapping在变少. 无标 ...
- auto uninstaller 密钥 破解 修复卸载工具
auto uninstaller 修复卸载工具 密钥注册机破解分享 只可以用于8.8.38,亲测可用 zhAAxzm5Wmmhzomyxyhoahra6AXrzy6X## hzWh6maaa5hmah ...
- t-检验
https://wenku.baidu.com/view/3954f9d9a58da0116c17497b.html介绍的挺好的,可以查看~ 应用方面:用于推断差异发生的概率,与f检验,卡方检验并列 ...
- [hdu4630] No Pain No Game
某次模拟赛的T1. 刚开始怀疑是RMQ......我真是太弱了QAQ 题目传送门 正解是离线操作,把所有询问按r从小到大排序. 然后把数从左到右处理,处理完第i个数,就可以回答所有r==i的询问了. ...
- mybatis 添加后获得该新增数据自动生成的 id
// useGeneratedKeys默认值为false,keyProperty的值对应的是User类中的主键字段名 // mybatis 写法如下 <insert id="inser ...
- idea快捷键-eclipse
ctrl+shift+R 查找文件ctrl+shift+T 查找class类alt+Enter 导包alt+Shift+P 实现方法
- ssm框架下怎么批量删除数据?
ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数 ...
- Protocol Buffers学习(4):更多消息类型
介绍一下消息的不同类型和引用 使用复杂消息类型 您可以使用其他消息类型作为字段类型.例如,假设你想在每个SearchResponse消息中包含Result消息,您可以在同一个.proto中定义一个Re ...