当前位置: 首页 > 知识库问答 >
问题:

slf4j和log4j2一起使用值得吗

戚良弼
2023-03-14
  • SLF4J强制应用程序记录字符串。Log4J2 API支持记录任何CharSequence(如果您想记录文本),但也支持按原样记录任何对象。
  • Log4j 2 API支持日志记录消息对象、Java 8 lambda表达式和无垃圾日志记录(它在日志记录CharSequence对象时避免创建vararg数组和字符串)。

共有1个答案

温浩大
2023-03-14

继续:编程到log4j2 API而不是slf4j

它是安全的:Log4j2 API提供了与slf4j完全相同的保证--以及更多。

既然Log4j2本身被分离成一个API和一个实现模块,那么使用SLF4j就不再有任何价值了。

泄放阀:log4j-to-slf4j

Log4j2包括log4j-to-SLF4j桥接模块。任何针对Log4j2 API编码的应用程序都可以随时选择将备份实现切换到任何符合SLF4J的实现。

正如问题中提到的,与使用SLF4J这样的包装API相比,直接使用Log4j2 API提供了更多的功能,并具有一些非功能性优势:

    null

SLF4J仍然是您的安全阀,它只是不意味着您的应用程序应该再针对SLF4J API编写代码。

披露:我对log4j2有贡献。

更新:对Log4j2 API的编程引入了一个“facade for a facade”,这似乎有些混乱。Log4j2 API和SLF4J在这方面没有区别。

 类似资料:
  • 问题内容: 因此,我尝试按照其网站上的此(非Maven实现)和要求将slf4j添加到log4j。并尝试使用此代码 并将以下内容添加到我的库中 log4j-api-2.3.jar log4j-core-2.3.jar log4j-sl4j-impl-2.3.jar log4j-to-sl4j-2.3.jar slf4j-api-1.7.12.jar 当我尝试运行它时,出现以下错误 知道我要去哪里错了

  • 我一直在尝试遵循这个网站和其他网站上的食谱,了解如何将log4j2 FileAppender实例添加到使用SLF4J API进行整体日志记录的类中,但我运气不佳。有人能告诉我下面的代码哪里出错了吗? assertTrue语句通过,因此文件由FileAppender创建,但assertEquals失败,因为日志线的长度为零(即日志文件没有内容)。 有什么想法吗?

  • 我开始将与一起使用,但问题如下。pom文件中我错了什么或缺少什么? 我的pom.xml: 我非常简单的代码:

  • 我目前正在尝试用log4j/slf4j和java 11构建一个应用程序,但在运行时我面临这个问题: 此问题的根源代码是我的记录器的初始化: 我依赖于: org.apache.logging.log4j: log4j-api: 2.11.1 org.apache.logging.log4j: log4j-core: 2.11.1 org.apache.logging.log4j: log4j-slf

  • 我想动态地创建一个appender并将其添加到记录器中。然而,这似乎不可能使用slf4j。我可以将我的appender添加到log4j记录器中,但是我无法使用slf4j LoggerFactle检索记录器。 我想做的是:创建一个测试类(而不是jUnit测试),并在构造函数中传递一个记录器,供测试类使用。测试类的每个实例都需要自己的记录器和appender来保存日志,以便以后在HTML报告中使用。

  • 问题内容: 我们已经迁移了所有代码,以使用slf4 API来使用通用API,但是现在我们正在考虑从log4j 1.x升级到log4j2.x。如果我们使用slf4j API和log4j2作为实现,是否能够使用log4j2的所有功能? 问题答案: Log4j2 API比SLF4J API丰富,并且 无法 通过SLF4J访问许多Log4j2 API功能。有关详情,请参见下文。 Log4j2实现的功能(如