关闭 SOAPUI API 日志记录

Dialing down SOAPUI API logging

我正在使用 SOAPUI API 为我的 SOAP Web 服务编写集成测试。

我的代码与下面的示例代码非常相似:

// create new project
WsdlProject project = new WsdlProject();

// import amazon wsdl
WsdlInterface iface = WsdlInterfaceFactory.importWsdl( "http://www.mycorp.com/somewsdl.wsdl", true )[0];

// get desired operation
WsdlOperation operation = (WsdlOperation) iface.getOperationByName( "MyOperation" );

// create a new empty request for that operation
WsdlRequest request = operation.addNewRequest( "My request" );

// generate the request content from the schema
request.setRequestContent( operation.createRequest( true ) );

// submit the request
WsdlSubmit submit = (WsdlSubmit) request.submit( new WsdlSubmitContext(), false );

// wait for the response
Response response = submit.getResponse();

//  print the response
String content = response.getContentAsString();
System.out.println( content );
assertNotNull( content );
assertTrue( content.indexOf( "404 Not Found" ) > 0 );

在我 运行 这个测试之后,它向控制台输出了大量日志。有没有一种方法可以调低 SOAPUI 日志。

我有相关的 SOAP UI 代码及其在 jar 文件中的各种依赖项。如果这个项目使用通用日志记录框架(我在依赖项中看到一个 log4j jar)是否有一种方法可以通过编程方式设置日志级别 ?

有点像

project.setLoggingLevel("INFO");

我已经做到了。您必须创建两个 log4j 配置文件,因为 soapUI 使用也使用 log4j 的 Apache httpclient。 httpclient 使用默认 log4j.xml 作为 class 路径资源加载。

soapUI 将尝试加载名为 "soapui-log4j.xml" 的 log4j 配置文件作为 class 路径资源(发生在 DefaultSoapUICore class 中)。

你在消息中说你不能更改 jar 中的 log4j.xml,所以你必须通过将新的放在 classpath 中的第一个来覆盖它,这样它们就是最先找到。

这是我的 log4j.xml 以保持 httpclient 日志记录低:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console-apache" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyMMdd-HHmmss.SSS} [%t][%-5p] [%c] %m%n" />
    </layout>
</appender>

<logger name="org.apache">
    <level value="ERROR" />
</logger>
<root>
    <level value="ERROR" />
    <appender-ref ref="console-apache" />
</root>
</log4j:configuration>

这是我的 log4j-soapui.xml:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console-soapui" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyMMdd-HHmmss.SSS} [%t][%-5p] [%c] %m%n" />
    </layout>
</appender>

<logger name="com.eviware">
    <level value="INFO" />
</logger>
<root>
    <level value="ERROR" />
    <appender-ref ref="console-soapui" />
</root>
</log4j:configuration>

最后,您可以通过定义几个定义配置文件位置的系统属性来覆盖任何默认加载行为:

-Dsoapui.log4j.config=${yourpath}/log4j-soapui.xml
-Dlog4j.xml=${yourpath}/log4j.xml