文章更新时间:2023年8月25日 11:40
组件简介
维护者 | apache组织 | 许可证类型 | Apache-2.0 |
首次发布 | 2012年7月30日 | 最新发布时间 | 2023年6月23 日 |
GitHub Star | 3139 | GitHub Fork | 1535 |
依赖包 | 8,582 | 依赖存储库 | 82,953 |
Apache Log4J 的实现,这是一种高度可配置的日志记录工具,专注于性能和低垃圾生成。 它有一个插件架构,使其可扩展并支持基于 LMAX Disruptor 的异步日志记录。
官网:https://logging.apache.org/log4j/2.x/
仓库地址:https://github.com/apache/logging-log4j2
参考链接:
https://packages.ecosyste.ms/registries/repo1.maven.org/packages/org.apache.logging.log4j:log4j
组件健康度
技术健康度 | 该组件具有较高的技术健康度,它支持多种日志记录 API,包括 Log4j 2 API, Log4j 1.2 API, SLF4J, Commons Logging 和 java.util.logging。它还利用了 LMAX Disruptor 库来实现基于无锁队列的高效异步日志记录。它还提供了多种日志格式,如 JSON, XML, YAML, HTML 等。 |
社区健康度 | 该组件由 Apache 软件基金会管理,拥有活跃的开发者和用户社区。它在 GitHub 上有超过 2000 个星标和 800 多个分支,在 Stack Overflow 上有超过 2 万个问题和答案。它还定期发布新版本和安全补丁,以修复已知的漏洞和增加新功能。 |
更新和维护频率 | 该组件的更新和维护频率较高,它在过去一年内发布了 10 个版本,其中包括针对最近发现的几个严重的远程代码执行漏洞(CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 和 CVE-2021-44832)的紧急修复。它还提供了不同的版本分支,以适应不同的 Java 平台(Java 6, Java 7 和 Java 8 及以上)。 |
兼容性 | 该组件具有较好的兼容性,它可以与多种日志记录 API 协同工作,也可以与多种应用程序服务器和框架集成,如 Spring Boot, Apache Tomcat, Jetty, Dropwizard 等。它还支持多种配置方式,如 XML, JSON, YAML, Properties 等。 |
文档和支持 | 该组件提供了详细的文档和支持,包括用户手册,开发者指南,API 文档,示例代码,FAQs 等。它还有一个用户邮件列表和一个开发者邮件列表,可以用于提问和讨论。此外,它还可以在 Stack Overflow 等第三方平台上寻求帮助。 |
综上所述,org.apache.logging.log4j:log4j 是一个技术先进、社区活跃、更新频繁、兼容广泛、文档完善的 Java 日志记录框架。
参考链接:
https://logging.apache.org/log4j/2.x/
https://logging.apache.org/log4j/2.x/manual/configuration.html
https://logging.apache.org/log4j/2.x/security.html
许可证解读
Apache License 2.0 是一种开源软件许可证,广泛用于授权开源项目和代码。Apache License 2.0 允许用户自由地使用、修改和分发受许可的软件,而无需支付版权费用或专利费用。它鼓励开发者共享他们的代码,并保护用户的权利。以下是该许可证的一些重要特点:
- 代码使用权:用户可以自由地使用、复制、修改、合并、发布、分发和销售受许可软件。
- 版权声明:用户必须在所有源代码副本中保留原始的版权声明、许可证声明和免责声明。
- 修改代码:如果用户对代码进行了修改,需要清楚标明哪些部分发生了变化,并不能暗示原作者同意这些修改。
- 商标使用:Apache License 2.0 并未授予使用原软件的任何商标或名称的权利。
- 专利许可:该许可证授予了在使用、修改或分发受许可软件时相关专利的非独占许可。这意味着如果用户授权其他人使用该软件,相关专利许可也会传递给接收方。
- 再许可:用户可以将受 Apache License 2.0 许可的代码作为一部分整合到其它开源项目中,并使用不同的许可证授权整个项目。但是,需要在代码中显式地说明使用了 Apache License 2.0 许可的部分。
需要注意的是,Apache License 2.0 并不保证软件没有缺陷或不稳定性,使用该软件的风险由用户自行承担。
许可证原文链接:https://github.com/apache/logging-log4j2/blob/2.x/LICENSE.txt
组件漏洞版本及修复方案
漏洞编号 | 漏洞标题 | 漏洞等级 | 影响版本 | 修复版本 |
MPS-2023-5545 | Apache Log4j 1.x 存在拒绝服务漏洞 | 中危 | [1.0.4,2.0.0) | 2.0.0 |
MPS-2021-38327 | Apache Log4j2 JDBC Appender远程代码执行漏洞 | 中危 | [2.0-beta7,2.3.2) | 2.3.2 |
MPS-2021-38752 | Apache Log4j2 自引用拒绝服务漏洞 | 中危 | [2.0-beta9,2.3.1) | 2.3.1 |
MPS-2021-38665 | Apache Log4j2 基于上下文查找的远程代码执行漏洞 | 严重 | [2.0-beta9,2.3.1) | 2.3.1 |
同类可替代组件
- Logback:这是 Log4j 的一个后继者,它提供了更快的实现,更多的配置选项,以及更灵活的归档旧日志文件的功能。官网:https://logback.qos.ch/
- Logstash:这是一个用于收集、处理和转发日志的开源工具,它可以与 Elasticsearch, Kibana 等平台集成,实现日志的可视化和分析。官网:https://www.elastic.co/cn/logstash
- Castle Core:这是一个用于 .NET 平台的日志记录框架,它支持多种日志记录级别,以及对 AOP, DynamicProxy, DictionaryAdapter 等特性的支持。官网:https://github.com/castleproject/Core
- Loki:这是一个用于 Kubernetes 和 Grafana 的水平可扩展、高性能、多租户的日志记录系统,它可以实现高效的日志查询和聚合。官网:https://github.com/grafana/loki
组件SBOM
org.apache.flume:flume-ng-core | 1.11.0 | 是 | maven |
io.netty:netty-codec | 4.1.97.Final | 否 | maven |
com.sun.mail:javax.mail | 1.6.2 | 是 | maven |
org.apache.yetus:audience-annotations | 0.5.0 | 否 | maven |
org.apache.commons:commons-lang3 | 3.12.0 | 是 | maven |
org.apache.maven:maven-model | 3.9.0 | 否 | maven |
org.springframework.integration:spring-integration-core | 5.5.18 | 否 | maven |
io.netty:netty-transport | 4.1.97.Final | 否 | maven |
org.slf4j:slf4j-ext | 2.0.6 | 是 | maven |
该SBOM清单仅展示部分内容
完整SBOM清单及检测报告:https://www.murphysec.com/console/report/1694919296269316096/1694919306222399488?allow=1