Maven 站点中提供了最终用户日志记录文档。本文档侧重于内部实现细节。
Maven 使用Plexus Container logging API,就像任何其他 Plexus 组件一样,即LoggerManager / Logger。
从 Maven 3.1.0 开始:
Maven 3.1.0 与SLF4J 简单记录器捆绑在一起,但准备好使用其他日志记录实现:SLF4J 负责加载实现,称为“SLF4J 绑定”。
日志配置加载实际上是通过日志实现完成的,没有任何 Maven 扩展来支持将 Maven 安装配置与每个用户的配置合并,例如:`$ maven.home /conf/logging` 目录被添加到核心的类路径中(请参阅`$ maven.主页/bin/m2.conf`)。有关文件名、格式等的详细信息,请参阅您的实施文档。
在 Maven 初始化期间,Maven 调整默认根日志记录级别以匹配 CLI 详细程度选择。由于此类功能在 SLF4J API 中不可用,因此需要将日志实现特定的扩展添加到 Maven 中以支持这些 CLI 选项:请参阅Slf4jConfigurationFactory / Slf4jConfiguration。
Plexus Logger 和 LoggerManager 可以使用 Plexus 注解注入到 Plexus 组件中
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @Component( role = MyComponent.class ) public class DefaultMyComponent implements MyComponent { @Requirement private Logger logger; @Requirement private LoggerManager loggerManager; }
从 Maven 3.1.0 开始,SLF4J Logger 也可以直接使用,无需 Plexus。当然,这只能在 Maven 3.1.0 下运行,那么这种技术只能在 Maven 核心组件或不需要与以前的 Maven 版本兼容的插件/组件中安全地使用。
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { final Logger logger = LoggerFactory.getLogger( MyClass.class ); }