Maven 日志记录

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

从 Maven 3.1.0 开始,Maven 不再实现 API 本身,而是通过Slf4jLoggerManager / Slf4jLogger映射到SLF4J APIILoggerFactory / Logger

获取记录器实例

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 核心组件中安全使用。

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 的层次结构)?