为什么使用 SLF4J 而不是 Log4J 来做 Java 日志

如题所述

  在代码中编写日志记录语句使用SLF4J的主要动机是让程序独立于任何特定的日志记录库,这些日志记录库可能需要与现在配置不同的配置,而且还会引入更多令人头疼的维护问题。然而除了这个之外,SLF4J API还有一个让您使用SLF4J而不是用长期感兴趣的 Log4j 更让人信服的功能,就是占位符功能,在代码中用{}来表示。占位符功能与 String的format()方法中的%s非常相似,因为它在运行时刻才提取所提供的真正的字符串。这不仅缩减了代码中的许多字符串连接,而且减少了创建String对象所需要的资源。即便在生产环境日志级别比如DEBUG和INFO级别的字符串连接可能不需要的时候,仍然可以起到同样的效果。由于字符串是不可更改的 ,而它们是在字符串池中创建的,这些字符串使用了堆内存 ,当应用在生产环境中运行在ERROR级别的时候,字符串在大多数情况下就不是必须的,比如DEBUG语句里的字符串就不是必须的。通过使用SLF4J可以延迟字符串的创建到运行时刻,这意味着只有在需要字符串的时候才创建它。如果已经使用了log4j,那么您已经熟悉把调试语句放入if()条件内的工作场景,而SLF4J占位符功能比log4j更适合这种场景。
温馨提示:内容为网友见解,仅供参考
无其他回答

为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
您好,这是因为选择SLF4J而不是直接选用Log4j, commons logging, logback 或者 java.util.logging。1)在你的开源库或者私有库中使用SLF4J,可以使它独立于任何的日志实现,这就意味着不需要管理多个库和多个日志文件。你的客户端将会体会到这一点。2)SLF4J提供了占位日志记录,通过移除对isDebugEnabled(...

为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
slf4j和log4j做一下对比总结:(1)大部分人在程序里面会去写logger.error(exception),其实这个时候log4j回去把这个exception tostring。真正的写法应该是logger(message.exception);而slf4j就不会使得程序员犯这个错误。(2)log4j间接的在鼓励程序员使用string相加的写法,而slf4j就不会有这个问题 你可以使用...

为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
通过使用SLF4J可以延迟字符串的创建到运行时刻,这意味着只有在需要字符串的时候才创建它。如果已经使用了log4j,那么您已经熟悉把调试语句放入if()条件内的工作场景,而SLF4J占位符功能比log4j更适合这种场景。下面是用Log4j时的做法,当然这并不好玩而且它增加了不必要的公式化的代码,减少了代码的可读性。

为什么要使用SLF4J而不是Log4J
需要的。通过使用SLF4J,你可以在运行时延迟字符串的建立,这意味着只有需要的String对象才被建立。而如果你已经使用log4j,那么你已经对 于在if条件中使用debug语句这种变通方案十分熟悉了,但SLF4J的占位符就比这个好用得多。

为什么要使用SLF4J而不是Log4J
就是SLF4J只是一个接口,而实际的日志操作还是由你绑定的Log4J之类的日志系统来实现的。也可以绑定其他的日志框架。但是他们操作起来都一样。也就是所有日志系统都使用同一种操作接口,当系统更改日志框架时,可以不用修改分散在各处的日志代码,只是替换个绑定的配置文件。在你的开源或内部类库中使用SLF4J...

为什么要使用SLF4J而不是Log4J
而不做具体实现。使用者可以根据自己具体的项目需求来做个性化的实现。另外很多开源框架比如常用的spring,内部都会用到SLF4J,道理同上。因为开源的本质就是开放实现,让用户自己去定义具体的功能实现。总的来说,SLF4J使你的代码独立于任意一个特定的日志API,这是一个对于开发API的开发者很好的思想。

为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
SLF4J相当于接口,Log4J是它的一种实现。代码中使用SLF4J,运行时要提供它的一种实现,可以是Log4J,也可以是其他的实现。如果代码中直接使用Log4J,那就不能在不改动代码的情况下使用其他的日志系统。

为什么要用SLF4J+Logback 替换commons-logging+log4j
1、更好的可读性;2、不需要使用logger.isDebugEnabled()来解决日志因为字符拼接产生的性能问题。先参考2,logback支持了更方便的自定义日志,便于后期的日志分析,可以将日志格式化保存到各种存储引擎中,这里是推崇用 Logback 替代 Log4J 的十几个理由,大至是更快;好测试;与 SLF4J 关系紧;文档丰富;...

深入了解Java日志框架:SLF4J和Logback
在众多日志框架中,SLF4J以它的灵活性著称。它虽然不是一个具体的日志实现,而是通过一套统一接口让开发者能够在Log4j、Logback、JUL和Commons Logging等框架间自由切换。使用SLF4J,只需编写符合接口的代码,而无需关心底层实现的细节。SLF4J的API允许使用占位符和MDC(Mapped Diagnostic Context)来增强日志...

为什么要用SLF4J+Logback 替换commons-logging+log4j
1、更好的可读性;2、不需要使用logger.isDebugEnabled()来解决日志因为字符拼接产生的性能问题。先参考2,logback支持了更方便的自定义日志,便于后期的日志分析,可以将日志格式化保存到各种存储引擎中,这里是推崇用 Logback 替代 Log4J 的十几个理由,大至是更快;好测试;与 SLF4J 关系紧;文档丰富;...

相似回答
大家正在搜