Log4j Scala API 提供了一个 Scala 友好的接口,用于针对 Log4j API 进行日志记录。它支持 Scala 2.102.112.122.133

这只是一个日志记录 API。您的应用程序仍然需要配置日志记录后端(例如,Log4j)。

依赖项

您需要在类路径中包含 org.apache.logging.log4j:log4j-api-scala 依赖项

libraryDependencies ++= Seq(
  "org.apache.logging.log4j" %% "log4j-api-scala" % "13.1.0"
)

Java 模块名称设置为 org.apache.logging.log4j.api.scala。OSGi Bundle-SymbolicName 设置为 org.apache.logging.log4j.api.scala.2.10org.apache.logging.log4j.api.scala.2.11 等。

用法

使用 Scala API 就像将 Logging 特性混合到您的类中一样简单

import org.apache.logging.log4j.scala.Logging
import org.apache.logging.log4j.Level

class MyClass extends BaseClass with Logging {

  def doStuff(): Unit = {
    logger.info("Doing stuff")
  }

  def doStuffWithLevel(level: Level): Unit = {
    logger(level, "Doing stuff with arbitrary level")
  }

  def doStuffWithUser(user: User): Unit = {
    logger.info(s"Doing stuff with ${user.getName}.")
  }

}

参数替换

与 Java 不同,Scala 提供了用于字符串插值的原生功能 从 Scala 2.10 开始。由于所有日志记录器调用都实现为宏,因此直接使用字符串插值不需要额外的 if 检查

logger.debug(s"Logging in user ${user.getName} with birthday ${user.calcBirthday}")

日志记录器名称

大多数日志记录实现使用分层方案来匹配日志记录器名称与日志记录配置。在此方案中,日志记录器名称层次结构由日志记录器名称中的 . 字符表示,与用于 Java/Scala 包名称的层次结构非常相似。Logging 特性添加的 Logger 属性遵循此约定:该特性确保 Logger 自动根据其使用的类进行命名。

开发

Log4j Scala API 使用 GitHub 进行源代码管理。

该项目需要两个 Java 编译器才能构建

  1. 8(Scala 2.102.11 需要)

  2. 一个匹配 [17,18) 范围的编译器。

您可以使用以下命令构建和验证源代码

./mvnw verify

您可以按如下方式构建并查看网站

./mvnw -N site
python -m http.server -d target/site

分发

根据 Apache 软件基金会的发布 分发策略创建流程,项目工件正式可从以下位置获取

有关详细信息,请参阅 发行说明

CycloneDX 软件物料清单 (SBOM)

从版本 13.1.0 开始,Log4j Scala API 随每个部署的工件一起分发 CyclenoDX 软件物料清单 (SBOM)。这是由 logging-parent 简化的,有关详细信息,请参阅 其网站

支持

请记住,此项目仅供内部使用。您可以使用 GitHub Issues 提出功能请求和错误报告,而不是问题!有关详细信息,请参阅 Log4j 支持策略

安全

如果您遇到未列出的安全漏洞或其他具有安全影响的意外行为,请私下向 Log4j 安全邮件列表 报告。有关更多详细信息,请参阅 Log4j 安全页面

发行说明

13.1.0

发布日期

2024-02-01

此次小版本包含错误修复、软件物料清单 (SBOM) 生成以及一些依赖项更新。

新增

  • 开始生成 CycloneDX SBOM

修复

  • 修复 Scala 3 宏中的递归内联问题 (40)

更新

  • org.apache.logging.log4j:log4j-bom 更新至版本 2.22.1 (43)

  • org.apache.logging:logging-parent 更新至版本 10.6.0 (44)

13.0.0

发布日期

2023-10-10

此主要版本的亮点包括 Scala 3 支持、OSGi 和 JPMS 描述符,以及切换到 语义版本控制

请注意,此版本仍然与早期版本 12.0 二进制兼容。尽管我们需要为了语义版本控制切换而增加主版本号,以避免与版本排序相关的混淆。

新增

  • 添加对 Scala 3 的支持 (LOG4J2-318426)

  • 添加 OSGi 和 JPMS 支持

更改

  • 将 Java 版本提升至 17(Scala 2.10 和 2.11 目标仍然需要 Java 8,构建切换到使用 maven-toolchains-plugin

  • 将 CI 切换到 GitHub Actions

  • sbt 切换到 Maven,以利用 logging-parent 的便利性

  • 切换到语义版本控制

  • org.apache.logging.log4j:log4j-api 版本更新至 2.20.0

  • org.apache.logging:logging-parent 版本更新至 10.1.1

  • 开始使用 log4j-changelog

12.0

发布日期

2020-05-03

这是该项目的第一个版本。

新增

更改

  • sbt 切换到 Maven,以利用 logging-parent 的便利性 (LOG4J2-1882)

  • 添加发行版分发脚本 (LOG4J2-2303)

发行说明

Log4j Scala API 采用由 logging-parent 提供的 CI/CD 基础。您可以简单地使用其发行说明。

许可证

根据一个或多个贡献者许可协议授予 Apache 软件基金会 (ASF) 许可。有关版权所有权的更多信息,请参阅随此作品分发的 NOTICE.txt。ASF 根据 Apache 许可证 2.0 版(“许可证”)向您许可此文件;您不得在不遵守许可证的情况下使用此文件。您可以在以下网址获取许可证副本:https://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或以书面形式同意,否则根据许可证分发的软件按“原样”分发,没有任何明示或暗示的担保或条件。请参阅许可证以了解管理许可证下权限和限制的具体语言。