Log4j2为什么被广泛使用?

Log4j 1.x 已被广泛采用,并用于许多应用中。然而,经过多年的发展,它的发展已经放缓。由于它需要与非常老的Java版本兼容,因此维护变得更加困难,并且在2015年8月成为End of Life。它的替代方案SLF4J/Logback,对框架进行了许多必要的改进。 那么,为什么还要浪费心思去使用Log4j 2呢? 以下是一些原因。

  1. Log4j 2被设计成可用作审计日志框架。在重新配置时,Log4j 1.x和Logback都会丢失事件。Log4j 2不会。在Logback中,Appender中的异常永远不会对应用程序可见。 在Log4j中,可以将Appender配置为允许异常渗透到应用程序。
  2. Log4j 2包含基于LMAX Disruptor库的下一代异步日志记录器(Asynchronous Loggers)。 在多线程场景中,相比 Log4j 1.x和Logback ,异步日志记录器的吞吐量高10倍,延迟低几个数量级。
  3. Log4j 2对于独立应用程序是无垃圾的,对于稳态日志记录期间的Web应用程序是低垃圾。 这减少了垃圾收集器的压力,并提供更好的响应时间性能。
  4. Log4j 2使用一个插件系统,通过添加新的AppenderFiltersLayoutsLookups 和 Pattern Converters,可以非常轻松地扩展框架,而无需对Log4j进行任何更改。
  5. 由于插件系统配置更简单。配置中的条目不需要指定类名。
  6. 支持自定义日志级别。 可以在代码或配置中定义自定义日志级别。
  7. 支持lambda表达式。 只有在启用了请求的日志级别时,在Java 8上运行的客户端代码才能使用lambda表达式来延迟构造日志消息。 不需要显式级别检查,从而产生更清晰的代码。
  8. 支持Message对象。 消息允许支持有趣和复杂的构造通过日志系统传递并被有效地操作。 用户可以自由创建自己的Message类型,并编写自定义 LayoutsFilters 和 Lookups 来操作它们。
  9. Log4j 1.x支持Appender上的Filters。 Logback添加了TurboFilters,允许在Logger处理事件之前对事件进行过滤。Log4j 2支持可以配置为在Logger处理事件之前处理事件的 Filters,因为它们由一个Logger或在一个Appender上处理。
  10. 许多Logback Appender不接受布局,只会以固定格式发送数据。 大多数Log4j 2 Appender接受布局,允许以任何所需格式传输数据。
  11. Log4j 1.x和Logback中的布局返回一个String。 这导致了Logback 编码器中讨论的问题。 Log4j 2采用更简单的方法,布局总是返回一个字节数组。 这样做的好处是,它意味着它们实际上几乎可以在任何Appender中使用,而不仅仅是写入OutputStream的Appender。
  12. Syslog Appender 既支持TCP和UDP,也支持BSD syslog和RFC5424格式。
  13. Log4J 2利用Java 5并发支持,并在可能的最低级别上执行锁定。log4j 1.x有已知的死锁问题。其中许多都是在logback中修复的,但许多logback类仍然需要在相当高的级别上进行同步。
  14. 它是一个Apache Software Foundation项目,遵循所有ASF项目使用的社区和支持模型。 如果您想贡献或获得提交更改的权利,请按照贡献中列出的路径进行操作。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值