Maven 日志记录
Maven 站点中提供了最终用户日志记录文档。本文档侧重于内部实现细节。
日志记录 API
Maven 使用Plexus Container logging API,就像任何其他 Plexus 组件一样,即LoggerManager / Logger。
从 Maven 3.1.0 开始:
- Maven 也支持 SLF4J API 日志记录 API,即LoggerFactory / Logger,
- Maven 没有使用Slf4jLoggerManager / Slf4jLogger中的 SLF4J API 来实现 Plexus 日志 API 本身,而是使用控制台的基本输出来实现它。
日志实现
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 的层次结构)?