首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSO2 EI 6.1.1 -每个API调试级别日志语句放在调用中介之后,在相关的日志文件中找不到

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

Stack Overflow用户
提问于 2017-11-21 14:57:09
回答 1查看 627关注 0票数 1

我需要记录特定API的调试级别。我对样例API:http://localhost:8280/test001使用单独的日志文件。对于这个需求,我使用了每个API log4j属性(参考:https://docs.wso2.com/display/ESB490/Per-API+Logs+in+WSO2+ESB)。问题:无法在文件中找到放置在调用中介器之后的调试级别日志。

我的API :test.xml

代码语言:javascript
复制
<?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>

我的log4j配置wso2ei-6.1.1\conf\log4j.properties:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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代码中所看到的,日志行:

代码语言:javascript
复制
DEBUG category = DEBUG LOG AFTER CALL MEDIATOR

在commonApi.log文件中丢失。

wso2carbon.log:

代码语言:javascript
复制
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}

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

代码语言:javascript
复制
INFO  category = INFO LOG AFTER CALL MEDIATOR

在wso2carbon.log文件中(这保证了调用中介后的执行)。

注:然而,我可以保证如下:

  • 在调用中介程序执行后编写的中介流。(我可以在控制台中看到信息日志。)
  • 调用中介成功响应值。
  • 没有API中的调用中介,所有调试日志行都在commonApi.log文件中。
  • 文件中有不连续的调试日志。(按预期工作)

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 06:18:58

是否确定需要在非阻塞模式下使用调用中介(默认情况下调用中介是非阻塞的)?如果您将模式更改为如下所示的阻塞模式,则代码可以工作。

代码语言:javascript
复制
<call blocking="true">

或者您可以使用默认阻塞的<callout>中介来获得相同的结果。

由于信息日志工作正常,我认为这可能是WSO2 IE6中的一个Bug。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47416114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档