Maven 日志记录

Maven 站点中提供了最终用户日志记录文档。本文档侧重于内部实现细节。

日志记录 API

Maven 使用Plexus Container logging API,就像任何其他 Plexus 组件一样,即LoggerManager / Logger

从 Maven 3.1.0 开始:

日志实现

Maven 3.1.0 与SLF4J 简单记录器捆绑在一起,但准备好使用其他日志记录实现:SLF4J 负责加载实现,称为“SLF4J 绑定”

日志配置加载实际上是通过日志实现来完成的,没有任何 Maven 扩展来支持将 Maven 安装配置与每个用户的配置合并,例如:${maven.conf}/logging目录被添加到核心的类路径(参见${maven.home} /bin/m2.conf)。有关文件名、格式等的详细信息,请参阅您的实施文档。

在 Maven 初始化期间,Maven 调整默认根日志记录级别以匹配 CLI 详细程度选择。由于此类功能在 SLF4J API 中不可用,因此需要将日志实现特定的扩展添加到 Maven 中以支持这些 CLI 选项:请参阅Slf4jConfigurationFactory / Slf4jConfiguration

获取记录器实例

从 Maven 3.1.0 开始,可以直接使用 SLF4J Logger。这种技术可以安全地用于 Maven 核心组件或插件/组件中,不需要与以前的 Maven 版本兼容。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass
{
   final Logger logger = LoggerFactory.getLogger( MyClass.class );
}

记录器名称

在 Maven 3.1.0 之前,在 Maven 中完成日志记录实现,基本控制台日志记录实现不使用记录器名称:它们按原样,没有明确约定何时将记录器从类传递到类或何时创建新记录器.

从 Maven 3.1.0 开始,如果记录器名称定义明确,记录实现可能会发挥最大作用。这个定义仍然需要定义和实现:

  • 经典的“类名”模式?
  • 特定于 Maven 的名称层次结构?
  • 混合(一些具有类名,一些具有特定于 Maven 的层次结构)?