You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tomcat中运行的Spring Boot应用中查看SOAP调用日志

在Tomcat 9.x中查看Spring Boot WAR应用的SOAP日志

嘿,我来帮你搞定这个问题!你之前在Spring Boot主方法里加的那两个系统属性,在Jar包运行时没问题,但部署成WAR到Tomcat后,因为Tomcat的启动机制不一样,主方法可能不会被触发,所以得换几种方式来配置:

方法1:通过Tomcat启动脚本添加JVM参数

这是全局生效的方式,适合所有部署在这个Tomcat上的应用(如果只有你的应用需要SOAP日志的话也没问题):

  • Linux/macOS:找到Tomcat的bin/catalina.sh文件,在文件开头或者JAVA_OPTS相关的配置段添加:
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true"
    
  • Windows:编辑bin/catalina.bat,找到类似set JAVA_OPTS=的行,修改成:
    set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true
    

修改后重启Tomcat,SOAP请求和响应的日志就会输出到Tomcat的logs/catalina.out里。

方法2:在Spring Boot应用内部配置(仅当前应用生效)

如果不想影响Tomcat上的其他应用,可以在Spring Boot里用初始化逻辑来设置这些属性,代替主方法里的代码:
创建一个配置类,利用@PostConstruct在Spring容器初始化时设置系统属性:

import javax.annotation.PostConstruct;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SoapLoggingConfig {

    @PostConstruct
    public void enableSoapLogging() {
        System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
        System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
    }
}

这样不管是Jar还是WAR部署,只要Spring容器启动,这些属性就会被设置,日志会输出到你应用的日志文件或者Tomcat的catalina.out里(取决于你的日志配置)。

方法3:通过日志框架捕获SOAP日志(更灵活)

如果你用的是Logback或者Log4j2,还可以直接配置日志框架来打印SOAP相关的DEBUG日志,这样能更好地控制日志输出的位置和格式:
比如Logback的logback-spring.xml里添加:

<logger name="com.sun.xml.ws.transport.http.client.HttpTransportPipe" level="DEBUG" additivity="false">
    <appender-ref ref="YOUR_APPENDER"/> <!-- 替换成你定义的日志输出appender -->
</logger>
<logger name="com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe" level="DEBUG" additivity="false">
    <appender-ref ref="YOUR_APPENDER"/>
</logger>

这样SOAP的详细日志就会输出到你指定的日志文件里,方便单独查看。

小提示

你设置的两个属性分别对应JAX-WS RI的独立版本(com.sun.xml.ws)和JDK内置的JAX-WS版本(com.sun.xml.internal.ws),同时配置能覆盖所有可能的情况,确保不管你的应用用的是哪个版本的JAX-WS都能输出日志。

内容的提问来源于stack exchange,提问作者Muhannad A.Alhariri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:53:36