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 ...
随机推荐
- 复习break、continue、while、do-while的运用
一.复习: 循环.反复执行某段语句一种语法形式. 1.基本语法: for( 初始条件 ; 循环条件 ; 状态的改变 ) { 循环体 } 循环的四要素. 循环的执行过程.初始条件--循环条件--循环体- ...
- Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.buding.system.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
前几天整体看了一下SpringBoot的简介,觉得看不如自己动手做,于是动手做一个简单的用户管理.启动的时候遇到了Skipping MapperFactoryBean with name 'sysUs ...
- linux有些sh文件,为什么要用 ./ 来执行
因为有环境变量PATH,里面包含了许多目录,这些目录下的可执行文件就无需输入完整路径来执行.你可以用 echo "$PATH"查看当前的环境变量包含的目录,自带的命令文件都是在PA ...
- phpStrom安装PHP_CodeSniffer检查代码规范
为什么使用PHP_CodeSniffer 一个开发团队统一的编码风格,有助于他人对代码的理解和维护,对于大项目来说尤其重要. PHP_CodeSniffer是PEAR中的一个用PHP5写的用来检查嗅探 ...
- python 添加字符串的七种方法
#使用{}的方法 s1 = 'Hello {}! My name is {}.'.format('World', 'Python猫') print(s1) s2 = 'Hello {0} My nam ...
- 华为云linux服务器部署TensorFlow-gpu全攻略
最近在玩谷歌新开源的自然语言模型bert,最开始是在google的免费GPU上面来弄的(这个部分其实也是可以写一个教程的,中间坑也挺多).但谷歌比较坑人,小数据集还行,大点的数据集训练耗费时间长,再加 ...
- Memcached笔记——(三)Memcached使用总结
为了将N个前端数据同步,通过Memcached完成数据打通,但带来了一些新问题: 使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不 ...
- python IO多路复用版FTP
需求: 实现文件上传及下载功能 支持多连接并发传文件 使用select or selectors
- JavaScript中的document.fullscreenEnabled
本文主要讲述了: 什么是document.fullscreenEnabled 作用 兼容性 正文 什么是document.fullscreenEnabled document.fullscreenEn ...
- Openstack neutron学习
最近在学习openstack neutron的东西,记录下自己的一些理解. 网络基础知识 Switches & Vlan交换机的作用是来连接设备,实现互通的.network host之间通过交 ...