在Maven构建期间关闭或配置java.util.Logging

时间:2014-05-09 10:10:10

标签: maven logging cxf-xjc-plugin cxf-codegen-plugin

我想清理/统一Maven构建的日志输出。不幸的是,maven插件的依赖项使用java.util.Logging( JUL )。简单地添加org.slf4j:jul-to-slf4j作为额外的依赖项来重定向日志输出并没有帮助。排除目前也不起作用,因为它是JUL,因此不是依赖。 这是我的配置,包含特定插件及其依赖项:

配置

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.7.11</version>
    <executions>...</executions>
    <configuration>
        <defaultOptions>
            <extraargs>
                <extraarg>-xjc-Xbg</extraarg>
            </extraargs>
        </defaultOptions>
    </configuration>
    <dependencies>
        <!-- This one uses JUL with logging level WARN -->
        <dependency>
            <groupId>org.apache.cxf.xjcplugins</groupId>
            <artifactId>cxf-xjc-boolean</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>
</plugin>

更新

我设法通过将具有以下内容的logging.properties文件添加到项目的根文件夹来关闭/配置JUL本身:

# Turn off any java.util.Loggers (or use SEVERE to see problems)
.level=OFF

此外,我必须使用以下参数执行Maven(或将其设置为MAVEN_OPTS):

mvn clean install -Djava.util.logging.config.file=${basedir}/logging.properties

剩下的问题

如果没有额外的文件和/或JVM参数(仅限pom.xml),有没有办法实现相同的结果?

3 个答案:

答案 0 :(得分:0)

我有类似的行为:在运行我的Struts2测试用例时,从CXF 2.6.3生成的webservices类获取WARNING消息,污染了我的测试日志。

由于日志跟踪未显示发送的包,我试图配置错误的包。

我已将此问题添加到我的setUp()测试用例方法中,该测试扩展了XWorkTestCase(或您需要的任何内容):

public void setUp() throws Exception{
        super.setUp();      
        java.util.logging.Logger.getLogger("org.apache.cxf").setLevel(Level.OFF);       
    }

当我从maven运行我的测试时,不会再出现来自CXF的日志消息。

答案 1 :(得分:0)

在使用maven构建项目时,插件cxf-codegen-plugin的以下配置阻止显示DEBUG日志条目:

<configuration>    
  <fork>once</fork>
  <additionalJvmArgs>
    -Dorg.apache.cxf.Logger=null
  </additionalJvmArgs>
</configuration>

答案 2 :(得分:0)

您可以设置所需的日志级别,而不是按照属性文件或完全禁用另一个日志中建议的所有日志记录:

<additionalJvmArgs>-Dorg.apache.cxf.level=OFF</additionalJvmArgs>

级别必须为java.util.logging.Level之一。