背景

如果您正在或在任何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,我们可以使用自己想要的记录器实现。

翻译原文

https://medium.com/@krishankantsinghal/logback-slf4j-log4j2-understanding-them-and-learn-how-to-use-d33deedd0c46

最新文章

  1. struts2学习之旅三 权限管理和导航设计
  2. java设计模式之工厂方法探究
  3. Queue 先进先出队列的操作
  4. 能看到U盘占用内存,但看不到文件
  5. android apk--程序发布前的准备
  6. Eddy's digital Roots
  7. C# JackLib系列之如何获取地球上两经纬度坐标点间的距离
  8. Java常见排序算法之折半插入排序
  9. java web 学习十四(JSP原理)
  10. JavaScript中的自调用函数
  11. SQL Server数据库修改字段属性
  12. linux下sed命令笔记
  13. html5中的一些小知识点(CSS)
  14. java基础之IO流及递归理解
  15. C# 获取Newtonsoft.Json的JObject多层节点内容
  16. poj2828(线段树查找序列第k小的值)
  17. JS精准倒计时(支持自定义模板)
  18. falsk 与 django 捕获异常
  19. 51Nod 1090 3个数和为0
  20. 【资料搜集】Python学习

热门文章

  1. [LC] 96. Unique Binary Search Trees
  2. easyui自学总结
  3. DB2数据库多行一列转换成 一行一列
  4. 4K时代,你不能不知道的HEVC
  5. mudbox安装未完成,某些产品无法安装的解决方法
  6. web中间件之nginx
  7. gin源码剖析
  8. 赫夫曼解码(day17)
  9. piranha(注意iptables和selinux的问题)
  10. 吴裕雄--天生自然 PHP开发学习:PhpStorm的配置与安装