WSO2 EI 6.1.1 - 在调用调解器之后放置的每个 API 调试级别日志语句在相关日志文件中找不到



我需要记录特定API的调试级别。 我为示例 API:http://localhost:8280/test001 使用单独的日志文件。我已经使用了每个APIlog4j属性来满足此要求(参考:https://docs.wso2.com/display/ESB490/Per-API+Logs+in+WSO2+ESB)。问题:在文件中找不到放置在调用调解器之后的 DEBUG 级别日志。

我的 API :测试.xml

<?xml version="1.0" encoding="UTF-8"?><api context="/test001" name="test" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET"><inSequence>
<log category="DEBUG" level="custom">
<property name="DEBUG category" value="DEBUG LOG BEFORE CALL MEDIATOR"/>
</log>
<call>
<endpoint>
<http method="get" uri-template="http://localhost:8280/sample001"/>
</endpoint>
</call>
<log category="DEBUG" level="custom">
<property name="DEBUG category" value="DEBUG LOG AFTER CALL MEDIATOR"/>
</log>
<log level="custom">
<property name="INFO  category" value="INFO LOG AFTER CALL MEDIATOR"/>
</log>
<payloadFactory media-type="xml">
<format>
<test>SUCCESS</test>
</format>
<args/>
</payloadFactory>
<loopback description="loop backing to out-sequence"/>
</inSequence>
<outSequence>
<log category="DEBUG" level="custom">
<property name="DEBUG category" value=" DBUG OUT SEQUENCE"/>
</log>
<log level="custom">
<property name="INFO category" value="INFO OUT SEUENCE"/>
</log>
<send/>
</outSequence>
<faultSequence>
<log category="DEBUG" level="custom">
<property name="log DEBUG" value=" DBUG FAULT SEQUENCE"/>
</log>
<log level="custom">
<property name="log DEBUG" value="INFO FAULT SEUENCE"/>
</log>
</faultSequence></resource></api>

My log4j配置 wso2ei-6.1.1\conf\log4j.properties:

log4j.category.API_LOGGER.test =DEBUG,COMMON_API_APPENDER
log4j.appender.test.Append = true
log4j.appender.COMMON_API_APPENDER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.COMMON_API_APPENDER.File=${carbon.home}/repository/logs/commonApi.log
log4j.appender.COMMON_API_APPENDER.datePattern='.'yyyy-MM-dd
log4j.appender.COMMON_API_APPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.COMMON_API_APPENDER.layout.ConversionPattern=%d{ISO8601} [%X{ip}-%X{host}] [%t] %5p %c{1} %m%n

注意:log4j.properties 文件中的其他属性不会更改

commonApi.log:

2017-11-21 19:42:06,502 [-] [localhost-startStop-1]  INFO test Initializing API: test
2017-11-21 19:43:21,703 [-] [PassThroughMessageProcessor-1] DEBUG test DEBUG category = DEBUG LOG BEFORE CALL MEDIATOR
2017-11-21 19:43:22,021 [-] [PassThroughMessageProcessor-3] DEBUG test DEBUG category =  DBUG OUT SEQUENCE
2017-11-21 19:43:22,021 [-] [PassThroughMessageProcessor-3]  INFO test INFO category = INFO OUT SEUENCE

正如您在API代码中看到的,日志行:

DEBUG category = DEBUG LOG AFTER CALL MEDIATOR

在 commonApi.log 文件中缺失。

WSO2碳.log:

TID: [-1234] [] [2017-11-21 19:43:21,703] DEBUG {API_LOGGER.test} -  DEBUG category = DEBUG LOG BEFORE CALL MEDIATOR {API_LOGGER.test}
TID: [-1234] [] [2017-11-21 19:43:21,711]  INFO {org.apache.synapse.core.axis2.TimeoutHandler} -  This engine will expire all callbacks after GLOBAL_TIMEOUT: 120 seconds, irrespective of the timeout action, after the specified or optional timeout {org.apache.synapse.core.axis2.TimeoutHandler}
TID: [-1234] [] [2017-11-21 19:43:22,004]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: /sample001, MessageID: urn:uuid:c7c63feb-9c3f-46f7-b3cb-9a9d0b4fb82e, Direction: request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2017-11-21 19:43:22,019]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  INFO  category = INFO LOG AFTER CALL MEDIATOR {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2017-11-21 19:43:22,021] DEBUG {API_LOGGER.test} -  DEBUG category =  DBUG OUT SEQUENCE {API_LOGGER.test}
TID: [-1234] [] [2017-11-21 19:43:22,021]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  INFO category = INFO OUT SEUENCE {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2017-11-21 19:43:22,021]  INFO {API_LOGGER.test} -  INFO category = INFO OUT SEUENCE {API_LOGGER.test}

但是您可以看到信息日志行:

INFO  category = INFO LOG AFTER CALL MEDIATOR

在 wso2carbon.log 文件中(这确保了调用调解器之后的执行)。

注意:但是我可以保证以下几点:

  • 调用调解器执行之后编写的中介流.(我可以在控制台中看到信息日志。
  • 呼叫调解员成功响应值。

  • 如果没有 API 中的调用调解器,所有 DEBUG 日志行都存在于 commonApi.log 文件中。按预期工作)

  • 以任何方式在文件中存在序列外调试日志。(按预期工作)

提前感谢。!

您确定需要在非阻塞模式下使用呼叫调解器(默认情况下呼叫调解器是非阻塞的)?如果您将模式更改为阻止,则您的代码有效,如下所示。

<call blocking="true">

或者,您可以使用默认阻塞<callout>调解器来获得相同的结果。

由于 INFO 日志正在工作,我认为这可能是 WSO2 IE6 中的一个错误。

最新更新