在Maven3 Mojo中重定向公共日志记录输出

时间:2011-05-11 13:39:37

标签: java logging maven-2 maven-3 apache-commons-logging

对于Flyway Maven插件,我需要调用许多使用 commons-logging (Flyway,Spring,...)进行记录的库

在Maven2中,我可以使用maven-plugin-log4j来完成此任务。这就是输出的样子:

[INFO] [flyway:history {execution: default-cli}]
[INFO] Hsql does not support locking. No concurrent migration supported.

然而,在Maven3中,这不能很好地运作:

[INFO] --- flyway-maven-plugin:1.3.2-SNAPSHOT:history (default-cli) @ flyway-sample ---
15.04.2011 09:49:10 com.googlecode.flyway.core.dbsupport.hsql.HsqlDbSupport <init>
INFO: Hsql does not support locking. No concurrent migration supported.

如何在Maven3中获得干净的日志记录输出?

2 个答案:

答案 0 :(得分:0)

您应该使用AbstractMojo.getLog()来使用Maven提供的Logger。

答案 1 :(得分:0)

好的,我发现了问题所在。

为了支持Maven 2,该插件依赖于 maven-core 版本 2.2.1

这个版本的maven-core引入了 slf4j-jdk14 依赖。

这在Maven 2下没有任何作用,但是在Maven 3中它被使用并且将所有日志记录输出重定向到JDK1.4日志记录(这是一个绝对痛苦的配置)。

为了将公共日志记录输出重定向到Maven 2和Maven 3中的Maven日志 ,我现在可以使用以下设置:

<!-- Stop redirecting to JDK 1.4 logging -->
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-core</artifactId>
    <version>2.2.1</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Log4J to Maven Log -->
<dependency>
    <groupId>com.pyx4j</groupId>
    <artifactId>maven-plugin-log4j</artifactId>
    <version>1.0.1</version>
</dependency>

<!-- Slf4j to Log4J -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>