1

我想清理/统一 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)?

4

3 回答 3

1

除了属性文件或完全禁用另一个答案中建议的所有日志记录之外,您还可以像这样设置所需的日志级别:

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

该级别需要是其中之一java.util.logging.Level

于 2020-10-14T12:36:00.157 回答
0

我有类似的行为:运行我的 Struts2 测试用例时,从 CXF 2.6.3 生成的 web 服务类中收到警告消息,污染了我的测试日志。

由于没有从发送的包中显示日志跟踪,因此我试图配置错误的包。

我已经从我的测试扩展(或任何你需要的)中将它添加到我的setUp()测试用例方法中:XWorkTestCase

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

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

于 2015-03-03T11:13:01.947 回答
0

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

<configuration>    
  <fork>once</fork>
  <additionalJvmArgs>
    -Dorg.apache.cxf.Logger=null
  </additionalJvmArgs>
</configuration>
于 2020-02-17T19:57:33.680 回答