2013-12-14 8 views

ответ

0
<logger level="DEBUG" doc:name="Logger" message="Payload is: #[message.payload]"/> 

Когда вы видите такие вещи, как: B @ 19e3bdb то, что вы видите, это строка по умолчанию представления независимо от объекта вашей полезной нагрузки сообщения.

Он, по-видимому, не реализует метод toString, который форматирует объект для чтения, как вы ожидаете. Если вы измените регистратор на просто # [сообщение], вы получите весь mul msg, включая информацию о заголовке. Среди них должен быть указатель под названием «полезная нагрузка», в котором будет указано имя/тип вашего полезного груза.

Вам необходимо будет найти документацию или информацию об этом классе и решить, как отформатировать ее части в удобном для чтения виде для вашего регистратора. Например, если ваш тип имеет свойство «name», которое является строкой, вы можете сделать # [message.payload.name], чтобы увидеть имя в выводе журнала.

+0

Привет, я тоже использовал ваше решение. Он также записывается таким образом. полезная нагрузка: [B @ 19e3bdb. Он не регистрирует сообщение. Я пытаюсь записать SOAP-сообщения – user3049576

+0

отредактировал ответ, чтобы объяснить поведение Object toString – mmeyer

0
<logger message="payload is : #[payload]" level="INFO" doc:name="Logger"/> 

Может также использоваться

+0

Привет, я использовал ваше решение. Теперь он записывается так. полезная нагрузка: [B @ 19e3bdb. Он не регистрирует сообщение. Я пытаюсь записать SOAP-сообщения. – user3049576

+0

. Пожалуйста, добавьте полное требование или конфигурацию мула, чтобы дать лучший ответ. –

+1

@ user3049576 Возможно, вам понадобится массив байтов для строкового трансформатора. –

5

Попробуйте один

<logger message="Payload is #[message.payloadAs(java.lang.String)]" level="INFO" /> 

Надеется, что это помогает.

+2

Это лучший подход, так как он будет использовать возможности автоматического преобразования Mule для преобразования полезной нагрузки в строку, а не просто вызвать 'toString()' на ней. Обратите внимание, что если полезная нагрузка является входным потоком, она будет потребляться после этого, поэтому лучше сериализуйте поток в 'byte []' или 'String', затем запишите его и продолжайте обрабатывать его с помощью сериализованного типа. –

Смежные вопросы