首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SLF4J和LOG4J比较喜欢哪一种?

SLF4J和LOG4J比较喜欢哪一种?
EN

Software Engineering用户
提问于 2011-09-16 01:34:05
回答 3查看 132.7K关注 0票数 6

我见过这个问题,但没有回答我。

它有一个全新的项目。我几乎一直使用Log4J,但现在我看到SLF4J正在做一些波浪。Log4J不能做什么,而我们需要SLF4J呢?这真的是升级吗。我是否应该在一个项目中使用它,而该项目也将有一个供其他人扩展的API?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2011-09-16 01:46:42

SLF4J基本上是一个抽象层。它不是日志记录实现。这意味着,如果您正在编写一个库,并且使用了SLF4J,您可以将该库交给其他人使用,并且他们可以选择与SLF4J一起使用哪个日志实现,例如log4j还是Java。它有助于防止项目仅仅因为使用依赖于它们的库而依赖于大量日志API。

因此,概括地说: SLF4J并没有取代log4j,它们一起工作。它从库/应用程序中删除了对log4j的依赖。

在这里查看一下:http://www.slf4j.org/,甚至这里:http://commons.apache.org/logging/ (Apache类似于SLF4J),以获得关于这个概念的更多信息。

票数 11
EN

Software Engineering用户

发布于 2011-09-16 06:02:00

slf4j是一个API,旨在提供对许多日志框架的通用访问权,然后使用大量的粘合代码,从而使现有代码易于使用。然后在部署时决定使用哪一个,而不是在编写代码时决定。

现在的最佳实践是将slf4j用于您自己的日志语句,然后为其选择适当的后端。这里是log4j。

迁移的主要原因是消息字符串中有{},允许您跳过ifDebug() { log("...") }构造。

票数 3
EN

Software Engineering用户

发布于 2011-09-16 07:05:12

如前所述,SLF4j只是一个日志API/接口,它并不直接取代log4j,后者是一个完整的日志框架(带有可配置的附加程序、过滤器、…)。但是将Commons替换为一个框架无关的用于日志记录的API。

可以将SLF4j配置为使用log4j作为日志记录后端,这样它们就可以一起工作。然而,一个非常密切相关的项目是logback (http://logback.qos.ch/)。Logback是Log4j的替代品:它是一个日志框架(如Log4j),但它本机使用SLF4j API。

SLF4j有一些有用的配套JAR文件,可用于使其他日志记录API委托到SLF4j API :jcl-overslf4j(与公用日志兼容的替代API )、7月到-slf4j(用于java.util.logging)、log4j-overslf4j(与log4j兼容)。使用这些工具,您可以与SLF4j (对第三方JAR有用)进行大量的日志API对话,这样您就有了一个处理所有日志的单一日志框架。

SLF4j API支持log4j/logback的"MDC“特性(在中没有此功能),因此您可以在项目中使用这个特性,而不依赖于特定的框架。您可能可以在代码中用log4j调用替换SLF4j调用(除非使用其他特性,如NDC),但您可能仍然希望将log4j或slf4j作为SLF4j API的后端。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/108683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档