Запрос и ответ SOAP для ведения журнала SOAP с усечением обратного входа до 4000 символов (байтов) - PullRequest
0 голосов
/ 29 августа 2018

Мы пытаемся регистрировать сообщения журнала Axis2 SOAP с помощью logback и следующей конфигурации:

<!-- 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 в одной строке?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

По-видимому, это проблема ReaderConfig.java (com.ctc.wstx.api.ReaderConfig.java), который отвечает за чтение (и запись ответа веб-службы). Как вы можете видеть здесь:

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

В методе createFullDefaults (), который вызывается при запуске сервера com.ctc.wstx.stax.WstxInputFactory, Reader создается с фиксированной длиной буфера 4000.

Таким образом, регистрация с использованием пользовательского кода является единственным решением, если вы хотите получить полное XML-сообщение ответа Axis2 в одну строку.

0 голосов
/ 02 сентября 2018

Вы уверены, что лимит находится в logback? Может быть, ограничение в оси2. Примечание : в этом примере ограничение находится в библиотеке apache CXF.

Ограничение длины текста при ведении журнала регистрации

Так я обычно веду журналы мыльных сообщений. Требует некоторого программирования, хотя.

String request = stub._getServiceClient().getLastOperationContext().getMessageContext("Out")
              .getEnvelope().toString());
String response = stub._getServiceClient().getLastOperationContext().getMessageContext("In")
              .getEnvelope().toString());

Если вы записываете эти переменные в журнал, у вас не должно возникнуть проблем.

...