Apache Log4j

Apache Log4j 是一个功能强大、工业级的 Java 日志框架,由 API、其实现和组件组成,以帮助部署各种用例。Log4j 被 Maven 生态系统的 8% 使用,并被列为 100 个最关键的开源软件项目之一。该项目由一个 团队 的志愿者积极维护,并得到一个庞大社区的 支持

功能

我们将在下面分享 Log4j 功能的一些亮点。

一应俱全

Log4j 包含一组丰富的组件,以帮助各种用例。

  • 附加器 针对文件、网络套接字、数据库、SMTP 服务器等。

  • 布局 可以渲染 CSV、HTML、JSON、Syslog 等格式的输出

  • 过滤器 可以使用日志事件速率、正则表达式、脚本、时间等进行配置。

  • 查找 用于访问系统属性、环境变量、日志事件字段等。

API 分离

Log4j 的 API(即 log4j-api)与实现(即 log4j-core)分离,使应用程序开发人员清楚地了解他们可以使用哪些类和方法,同时确保向前兼容性。(有关详细信息,请参阅 API 分离。)Log4j API 还提供了市场上功能最丰富的日志门面;除了普通的 String 之外,还支持各种 Message 类型(ObjectMap 等)、lambda 表达式、参数化日志记录、标记、级别、诊断上下文(又名 MDC/NDC)等。查看 Java APIKotlin APIScala API 页面以获取更多信息。

无供应商锁定

即使 Log4j API 是由 Log4j 本身完全实现的,用户也可以选择使用其他日志后端。这可以通过使用实现 Log4j API 的其他后端,或者将 Log4j API 调用转发到其他日志门面(例如 SLF4J)并使用该特定门面的后端来实现。

性能

如果配置正确,Log4j 可以提供出色的性能,几乎不会给 Java 垃圾收集器带来任何负担。这得益于基于 LMAX Disruptor 技术(其根源在于金融交易的苛刻行业)的异步记录器,以及在热路径中内置的无垃圾功能。查看 性能 页面以获取详细信息。

可扩展性

Log4j 包含一个功能齐全的 插件支持,用户可以利用它来扩展其功能。您可以轻松添加自己的组件(布局、附加器、过滤器等)或自定义现有组件(例如,向 模式JSON 模板布局 添加新指令)。查看 扩展 Log4j 页面。