2017-11-21 14 views
1

특정 API에 대해 DEBUG 수준을 기록해야합니다. 샘플 API에 대해 별도의 로그 파일을 사용합니다 : http://localhost:8280/test001. API 당 log4j 속성 (참조 : https://docs.wso2.com/display/ESB490/Per-API+Logs+in+WSO2+ESB)을 사용했습니다. 문제 : 호출 중재자 뒤에 배치 된 DEBUG 레벨 로그를 파일에서 찾을 수 없습니다. WSO2 EI 6.1.1 - API 당 호출 중개자 다음에 오는 DEBUG 수준의 로그 문은 관련 로그 파일에서 찾을 수 없습니다.

내 API : test.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> 

내 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 :

DEBUG category = DEBUG LOG AFTER CALL MEDIATOR 

이 commonApi.log 파일에서 누락되었습니다 당신은 API 코드에서 볼 수 있듯이 691,363,210
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 

, 선을 기록합니다.

wso2carbon.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 파일을 (이 호출 중재자 후 실행을 보장합니다).

참고 : 그러나 내가 물건 아래 드릴 수 있습니다 : 콜 중재자 후 작성 중개 플로우가 실행되는 것을

  • (내가 콘솔에서 정보 로그를 볼 수 있습니다.)..
  • mediator가 값으로 성공적으로 응답합니다. API의 호출 중재자없이

  • , 모든 디버그 로그 라인은 commonApi.log 파일에 있습니다.

  • 가 밖으로 시퀀스 디버그 로그 파일에 어떤 방법이 있습니다 (예상대로 작동). (작업 예상대로)

감사합니다.

+0

호출 중재자가 오류가 발생하면 메시지가 오류 시퀀스로 전달됩니다. – simar

+0

질문에서 언급했듯이 중재자를 성공적으로 값에 응답하십시오! 귀하의 의견은이 질문과 관련이 없습니다. – imasmohamed

답변

1

호출 중재자를 비 차단 모드로 사용해야합니까 (기본적으로 호출 중개자는 비 차단)? 다음과 같이 모드를 차단으로 변경하면 코드가 작동합니다.

<call blocking="true"> 

또는 당신은 이 같은 결과를 얻기 위해 기본적으로을 차단 <callout> 중재자를 사용할 수 있습니다.

INFO 로그가 작동 중이므로 WSO2 IE6의 버그 일 수 있다고 생각합니다.