繁体   English   中英

有什么方法可以在 WSO2 Microintegrator 的一行中记录 XML 或 JSON

[英]Is there any way to log XML or JSON in one line in WSO2 Microintegrator

这是 Integration Studio 控制台中的日志 output

2022-11-17 16:32:05 DEBUG Service: - To: /services/Service, WSAction:XYS Direction: request, Request = ======== Log Request =======, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ><soapenv:Body>
      <Read>
         <filter>
            <Field>XYS</Field>
         </filter>
      </Read>
   </soapenv:Body></soapenv:Envelope>

我没有找到任何开箱即用的解决方案。

您可以通过以下两种方式在不编写任何代码的情况下实现这一目标。

选项 01:全球解决方案

<MI_HOME>/conf/log4j2.properties中的CARBON_CONSOLECARBON_LOGFILE appender 更新为如下所示。

# CARBON_CONSOLE is set to be a ConsoleAppender using a PatternLayout.
appender.CARBON_CONSOLE.type = Console
appender.CARBON_CONSOLE.name = CARBON_CONSOLE
appender.CARBON_CONSOLE.layout.type = PatternLayout
appender.CARBON_CONSOLE.layout.pattern = [%d] %5p {%c{1}} - %replace{%msg}{[\r\n]+}{}%ex%n
appender.CARBON_CONSOLE.filter.threshold.type = ThresholdFilter
appender.CARBON_CONSOLE.filter.threshold.level = DEBUG
# CARBON_LOGFILE is set to be a DailyRollingFileAppender using a PatternLayout.
appender.CARBON_LOGFILE.type = RollingFile
appender.CARBON_LOGFILE.name = CARBON_LOGFILE
appender.CARBON_LOGFILE.fileName = ${sys:carbon.home}/repository/logs/wso2carbon.log
appender.CARBON_LOGFILE.filePattern = ${sys:carbon.home}/repository/logs/wso2carbon-%d{MM-dd-yyyy}.log
appender.CARBON_LOGFILE.layout.type = PatternLayout
appender.CARBON_LOGFILE.layout.pattern = [%d] %5p {%c} - %replace{%msg}{[\r\n]+}{}%ex%n
appender.CARBON_LOGFILE.policies.type = Policies
appender.CARBON_LOGFILE.policies.time.type = TimeBasedTriggeringPolicy
appender.CARBON_LOGFILE.policies.time.interval = 1
appender.CARBON_LOGFILE.policies.time.modulate = true
appender.CARBON_LOGFILE.policies.size.type = SizeBasedTriggeringPolicy
appender.CARBON_LOGFILE.policies.size.size=10MB
appender.CARBON_LOGFILE.strategy.type = DefaultRolloverStrategy
appender.CARBON_LOGFILE.strategy.max = 20
appender.CARBON_LOGFILE.filter.threshold.type = ThresholdFilter
appender.CARBON_LOGFILE.filter.threshold.level = DEBUG

如果您只想更新控制台日志,只需更新CONSOLE appender。 请记住,这将从所有日志消息中删除所有新行,而不仅仅是来自Log Mediator的消息,这也不会影响任何堆栈跟踪日志等。所以我真的没有看到使用这种方法有任何问题。

选项 02:特定于日志中介的解决方案

当您记录日志时,不要依赖日志级别 full 来记录有效负载,而只需将消息正文记录为单独的属性。 在记录时替换换行符。 在下面的示例中,我为此使用 XPATH 2.0 替换 function。 因此,如果您尚未在 Micro Integrator 中启用 XPATH 2.0,请将以下内容添加到deployment.toml中。

[mediation]
synapse.enable_xpath_dom_failover="true"

然后在您的Log Mediator中使用类似下面的内容。

 <log level="custom">
     <property name="MESSAGE_BODY" expression="fn:replace($ctx:body, '\n', '')" scope="default" type="STRING" xmlns:fn="http://www.w3.org/2005/xpath-functions" />
 </log>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM