logging - Axis2 使用 logback 记录 SOAP 请求和响应截断为 4000 个字符(字节)

标签 logging soap axis2 intershop

我们正在尝试使用 logback 和以下配置记录 Axis2 SOAP 日志消息:

<!-- Axis client appender -->
<appender name="AxisLogging" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>INFO</level>
    <OnMatch>ACCEPT</OnMatch>
    <OnMismatch>NEUTRAL</OnMismatch>
  </filter>
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>DEBUG</level>
    <OnMatch>ACCEPT</OnMatch>
    <OnMismatch>NEUTRAL</OnMismatch>
  </filter>
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>TRACE</level>
    <OnMatch>ACCEPT</OnMatch>
    <OnMismatch>DENY</OnMismatch>
  </filter>

  <File>log/axis-client.log</File>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
    <FileNamePattern>log/axis-client.%i.log</FileNamePattern>
    <MinIndex>1</MinIndex>
    <MaxIndex>5</MaxIndex>
  </rollingPolicy>
  <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <MaxFileSize>100MB</MaxFileSize>
  </triggeringPolicy>

  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS zZ}] %-5level [%mdc{requestsite}] [%mdc{session.id}] "%thread" %msg %ex%n</Pattern>
    </layout>
  </encoder>
</appender>

<logger name="httpclient.wire.content">
  <appender-ref ref="AxisLogging"/>
</logger>

并且长请求和响应 XML 的日志消息被截断为 4000 个字符,并通过多个日志行传播。
有没有办法将 logback 配置为在一个日志行中记录整个 XML?

谢谢!

最佳答案

显然,这是负责读取(和记录 Web 服务响应)的 ReaderConfig.java (com.ctc.wstx.api.ReaderConfig.java) 的问题。正如你在这里看到的:

https://github.com/FasterXML/woodstox/blob/master/src/main/java/com/ctc/wstx/api/ReaderConfig.java

在由 com.ctc.wstx.stax.WstxInputFactory 在 server start 上调用的 createFullDefaults() 方法中,Reader 构造为固定缓冲区长度为 4000。

因此,如果您希望在一行中包含完整的 Axis2 响应 XML 消息,则使用自定义代码进行日志记录是唯一的解决方案。

关于logging - Axis2 使用 logback 记录 SOAP 请求和响应截断为 4000 个字符(字节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52074418/

相关文章:

java - 如何让 axis/axis2 为生成的类生成 toString 方法?

web-services - ADBException : Unexpected subelement

java - Java 日志语句的奇怪行为

logging - 更改 Bokeh 服务的日志记录级别

ruby-on-rails - rake 测试和错误 : log writing failed. "\xE2"从 ASCII-8BIT 到 UTF-8

c# - 使用 C# 的 SOAP 客户端

xml - 在 Axis2 中使用 XML 1.1

sql-server - SSIS 日志记录 - 捕获变量?

ruby-on-rails - Rails-使用外部 SOAP API 的最佳方式?

android - @Order 注解对 XML 序列化顺序没有影响