log4j2简介

Apache Log4j 2java

Apache Log4j 2是对Log4j的升级,它比它的前辈Log4j 1提供了显著的改进。在解决Logback的架构中存在的一些固有问题时,提供了许多可用的改进。正则表达式


特性api

API分离安全

Log4j的API与实现分离,使应用程序开发人员清楚地知道,他们可使用哪些类和方法来确保向前兼容性。这容许Log4j团队以一种兼容的方式安全地改进实现。多线程

改进的性能架构

Log4j 2包含了基于LMAX破坏者库的下一代异步日志记录器。在多线程场景中,异步日志记录器的吞吐量比Log4j 1要高18倍,而且数量级要低。Log4j 1.x和Logback。有关详细信息,请参阅异步日志记录性能。不然,Log4j 2将显著优于Log4j 1。x,Logback java.util。日志记录,特别是在多线程应用程序中。更多信息请参见性能。app

支持更多API
Log4j 2 API将提供最好的性能,Log4j 2为Log4j 1.二、SLF4J、Commons日志记录和java.util提供了支持。日志(7月)api。
 
避免锁定
对Log4j 2 API进行编码的应用程序老是能够选择使用任何slf4j兼容的库做为它们的日志程序实现,使用log4jslf4j适配器。
 

自动从新加载配置异步

与Logback同样,Log4j 2能够在修改后自动从新加载它的配置。与Logback不一样的是,在从新配置的状况下,它将不会丢失日志事件。ide

先进的过滤布局

与Logback同样,Log4j 2支持基于上下文数据、标记、正则表达式和日志事件中的其余组件进行过滤。在传递给日志记录器或经过appender以前,能够指定过滤应用于全部事件。此外,过滤器还能够与日志记录器相关联。与Logback不一样的是,你能够在任何状况下使用一个通用的过滤器类。

插件体系结构

Log4j使用插件模式来配置组件。所以,您不须要编写代码来建立和配置Appender、布局、模式转换器等等。Log4j自动识别插件并在配置引用它们时使用它们。

属性的支持

您能够在配置中引用属性,Log4j将直接替换它们,或者Log4j将把它们传递给一个将动态解析它们的底层组件。属性来自于配置文件中定义的值、系统属性、环境变量、ThreadContext映射和事件中的数据。用户能够经过添加本身的Lookup Plugin来进一步定制属性提供者。

Java 8λ支持

在此以前,若是一个日志消息的构建成本很高,那么在构造消息以前,您一般会显式地检查请求的日志级别是否启用。在Java 8上运行的客户机代码能够从Log4j的lambda支持中获益。因为Log4j不会对一个lambda表达式进行评估,若是请求的日志级别没有启用,那么使用较少的代码就能够实现相同的效果。

自定义日志级别

在Log4j 2中,能够很容易地在代码或配置中定义自定义日志级别。不须要子类化。

版本支持

在版本2.9.1中,Log4j支持Java 9,可是仍然能够在Java 7或8中工做。在这个版本中,log4j-api被打包为一个多版本jar,而且支持StackWalker和Process api的使用。

在版本2.4中,Log4J须要Java 7。

Log4j版本2.3和旧版本须要Java 6。

 

支持特性

XML configuration、Properties configuration、JSON configuration

CSV Layout、JSON Layout、XML Layout

Async Loggers

Kafka Appender、SMTP Appender、JMS Appender、JDBC Appender、JPA Appender、NoSQL Appender with MongoDB provider 等

相关文章
相关标签/搜索