Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重定向Maven3 Mojo中的commons日志记录输出_Java_Logging_Maven 2_Maven 3_Apache Commons Logging - Fatal编程技术网

Java 重定向Maven3 Mojo中的commons日志记录输出

Java 重定向Maven3 Mojo中的commons日志记录输出,java,logging,maven-2,maven-3,apache-commons-logging,Java,Logging,Maven 2,Maven 3,Apache Commons Logging,对于Maven插件,我需要调用许多使用公共日志记录的库(Flyway,Spring,…) 在Maven2中,我可以用来实现这一点。这是输出的样子: [INFO] [flyway:history {execution: default-cli}] [INFO] Hsql does not support locking. No concurrent migration supported. 但是,在Maven3中,这并不太有效: [INFO] --- flyway-maven-plugin:1.

对于Maven插件,我需要调用许多使用公共日志记录的库(Flyway,Spring,…)

在Maven2中,我可以用来实现这一点。这是输出的样子:

[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.
[INFO]——flyway maven插件:1.3.2-SNAPSHOT:history(默认cli)@flyway示例---
2011年4月15日09:49:10 com.googlecode.flyway.core.dbsupport.hsql.HsqlDbSupport
信息:Hsql不支持锁定。不支持并发迁移。

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

您应该使用Maven提供的记录器。

好的,我发现了问题所在

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

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

在Maven2下,这没有任何作用,但在Maven3中,它会被使用,将所有日志输出重定向到JDK1.4日志记录中(这是一个非常麻烦的配置)

为了在Maven 2和Maven 3中将commons日志输出重定向到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>

org.apache.maven
马文堆芯
2.2.1
org.slf4j
slf4j-jdk14
com.pyx4j
maven-plugin-log4j
1.0.1
org.slf4j
slf4j-log4j12
1.5.6

这对我没有什么帮助,因为记录的绝大多数代码都不是特定于maven的(想想flyway core,spring,…)。AbstractMojo使用了一个函数,它反过来只执行System.out.println(“[”+prefix+“]”+sWriter.toString());-因此,您可以配置他们的记录器来执行相同的操作。也许maven2.x提供了这样的配置?有一个MavenLoggerManager和一个PrintStreamLogger可能会有所帮助。。但它看起来没那么好:/