金氧

Log4j 2 介绍

关于Log4j 2

Log4j 2 是Log4j的升级版,与之前的版本Log4j 1.x相比、有重大的改进,在修正了Logback固有的架构问题的同时,改进了许多Logback所具有的功能。

Log4j 2的特性以及改进有:

  • API分离:Log4j将API与实现分离开来。开发人员现在可以很清楚地知道能够使用哪些没有兼容问题的类和方法,同时又允许通过自己实现来增强功能。
  • 改进的性能:Log4j 2的性能在某些关键领域比Log4j 1.x更快,而且大多数情况下与Logback相当。更多的信息请参考性能。
  • 多个API支持:Log4j 2提供最棒的性能的同时,还支持SLF4J和公共日志记录API。
  • 自动配置加载:像Logback一样,一旦配置发生改变,Log4j 2可以自动载入这些更改后的配置信息,又与Logback不同,配置发生改变时不会丢失任何日志事件。
  • 高级过滤功能:与Logback类似,Log4j 2可以支持基于上下文数据、标记,正则表达式以及日志事件中的其他组件的过滤。Log4j 2 能够专门指定适用于所有的事件,无论这些事件在传入Loggers之前还是正在传给 appenders。另外,过滤器还可以与Loggers关联起来。与Logback不同的是,Filter公共类可以用于任何情况。
  • 插件架构:所有可以配置的组件都以Log4j插件的形式来定义。同样地,不需要修改任何Log4j代码就可以创建新的Appender、Layout、Pattern Convert 等等。Log4j自动识别预定义的插件,如果在配置中引用到这些插件,Log4j就自动载入使用。
  • 属性支持:属性可以在配置文件中引用,也可以直接替代或传入潜在的组件,属性在这些组件中能够动态解析。属性可以是配置文件,系统属性,环境变量,线程上下文映射以及事件中的数据中定义的值。用户可以通过增加自己的Lookup插件来定制自己的属性。

文档

Log4j 2用户文档可在这里在线阅读,或下载成PDF格式。

要求

Log4j 2至少要求安装Java 5,然而使用Java 6的增强功能可以提高性能。有些特性需要一些可选的依赖,这些依赖在相关特性的文档中有说明。

资讯

Log4j 2现在已经可以测试。API与Log4j 1.x 不兼容,不过通过适配器可以继续使用Log4j 1.x API。 适配器同样适用于Commons Logging和SLF4J.

以前的发布

以前的Apache log4j发布可以从archive repository找到。

Log4j 2.x的构建与安装

构建

Log 4j 运行在Apache 软件基金会下的代码仓库中。Log4j 代码仓库可以找到如何获取当前绝大多的源代码的细节。可以根据Log4j下载说明下载最新的源代码

Log4j 2.x 使用Maven 2或3作为生成工具。在root目录中仅运行”mvn install”就可以生成Log4j.

程序中如何使用

在你的程序中使用Log4j之前必须确保API和Core jars 在程序的classpath中。使用Maven将下面的依赖加入pom.xml.

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta3</version>
</dependency>
</dependecies>

Apache 公共日志记录

公共日志记录在许多组件中使用,不同的组建可以选择特定的日志记录的实现。为了把这些组件的日志功能集成到Log4j 2,需要加入下面的依赖,而且不能删除Commons Logging jar

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j.adapters</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.0-beta3</version>
</dependency>
</dependecies>

SLF4J

SLF4J是另一个受欢迎的日志记录API,通过加入下面的依赖以及SLF4J依赖就可以将其绑定到Log4j 2.

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j.adapters</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.0-beta3</version>
</dependency>
</dependecies>

发布更改记录

升级注意事项

Apache Log4j 2不支持兼容老版本。如果要升级到Log4j 2请铭记下列几条:

  • 需要Java 5
  • 简化了XML配置,不兼容logj4 1.x。
  • 不支持属性文件配置
  • 支持JSON配置
  • 虽然Log4j 2不能与Log4j 1.x直接兼容,但是可以通过自带兼容桥梁来降低升级带来的代码更改。