Maven cxf 插件日志记录
Maven cxf plugin logging
我正在使用 Apache cxf maven 插件 (v3.3.0) 成功生成 java 包装器。
但是,maven 构建的输出包含来自 wsdl2java 的数千条 DEBUG 日志记录行,我无法将其删除。是否有 extraarg 或其他方式使进程静音,以便我只收到成功(或可能失败)消息?
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<defaultOptions>
<autoNameResolution>true</autoNameResolution>
</defaultOptions>
<wsdlOptions>
<!--Some Web Service -->
<wsdlOption>
<wsdl>https://some/web/service.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-quiet</extraarg>
<extraarg>-p</extraarg>
<extraarg>com.foo.bar</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
抱歉没有进入根解决方案,但在我的依赖项中添加这个帮助:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<scope>provided</scope>
</dependency>
或者在插件执行中添加以下内容也有帮助,除了速度日志
<additionalJvmArgs>
-Dorg.apache.cxf.Logger=null
</additionalJvmArgs>
希望这能给某人一些提示,以提出更合适的解决方案。
似乎在 Java 9+ 下,插件强制在分叉的 JVM 中生成代码,而不管默认记录为 false
,也不管此选项的任何显式配置。插件执行看不到项目的任何日志记录配置。 CXF 正在使用 java.util.logging
进行记录,任何严重程度 FINER
的日志都会打印到控制台。
我通过使用插件的 additionalJvmArgs
配置选项向分叉的 JVM 提供日志记录配置文件的显式路径解决了这个问题:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf-plugin.version}</version>
<configuration>
<additionalJvmArgs>-Dlogback.configurationFile=${project.basedir}/src/test/resources/logback-codegen.xml</additionalJvmArgs>
</configuration>
</plugin>
Logback 的系统 属性(在我的情况下)是 logback.configurationFile
。对于 Log4j 那将是 log4j.configurationFile
.
在日志记录配置文件中可以添加以下记录器(Logback):
<!-- entries below silence excessive logging from cxf-codegen-plugin -->
<logger name="org.apache.cxf" level="info"/>
<logger name="org.apache.velocity" level="info"/>
这样插件执行仍然会向控制台打印所有警告和错误,但所有重复的调试信息都会消失。缺点是您需要在每个项目中都有一个可见的日志记录配置文件。但是,无论如何你可能应该有一个。通常可以使用与(单元)测试相同的测试。
我正在使用 Apache cxf maven 插件 (v3.3.0) 成功生成 java 包装器。
但是,maven 构建的输出包含来自 wsdl2java 的数千条 DEBUG 日志记录行,我无法将其删除。是否有 extraarg 或其他方式使进程静音,以便我只收到成功(或可能失败)消息?
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<defaultOptions>
<autoNameResolution>true</autoNameResolution>
</defaultOptions>
<wsdlOptions>
<!--Some Web Service -->
<wsdlOption>
<wsdl>https://some/web/service.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-quiet</extraarg>
<extraarg>-p</extraarg>
<extraarg>com.foo.bar</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
抱歉没有进入根解决方案,但在我的依赖项中添加这个帮助:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<scope>provided</scope>
</dependency>
或者在插件执行中添加以下内容也有帮助,除了速度日志
<additionalJvmArgs>
-Dorg.apache.cxf.Logger=null
</additionalJvmArgs>
希望这能给某人一些提示,以提出更合适的解决方案。
似乎在 Java 9+ 下,插件强制在分叉的 JVM 中生成代码,而不管默认记录为 false
,也不管此选项的任何显式配置。插件执行看不到项目的任何日志记录配置。 CXF 正在使用 java.util.logging
进行记录,任何严重程度 FINER
的日志都会打印到控制台。
我通过使用插件的 additionalJvmArgs
配置选项向分叉的 JVM 提供日志记录配置文件的显式路径解决了这个问题:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf-plugin.version}</version>
<configuration>
<additionalJvmArgs>-Dlogback.configurationFile=${project.basedir}/src/test/resources/logback-codegen.xml</additionalJvmArgs>
</configuration>
</plugin>
Logback 的系统 属性(在我的情况下)是 logback.configurationFile
。对于 Log4j 那将是 log4j.configurationFile
.
在日志记录配置文件中可以添加以下记录器(Logback):
<!-- entries below silence excessive logging from cxf-codegen-plugin -->
<logger name="org.apache.cxf" level="info"/>
<logger name="org.apache.velocity" level="info"/>
这样插件执行仍然会向控制台打印所有警告和错误,但所有重复的调试信息都会消失。缺点是您需要在每个项目中都有一个可见的日志记录配置文件。但是,无论如何你可能应该有一个。通常可以使用与(单元)测试相同的测试。