Apigee Edge 문서입니다.
Go to the
Apigee X documentation. info
로깅은 문제를 디버깅하는 효율적인 방법 중 하나입니다. 헤더, 양식 매개변수, 쿼리 매개변수, 동적 변수 등과 같은 API 요청에 대한 모든 정보를 로깅하여 나중에 참조할 수 있습니다. 이 정보는 메시지 프로세서 (Apigee Edge for Private Cloud만 해당)에서 로컬로 로깅하거나 Sumo Logic, Splunk 또는 Loggly와 같은 서드 파티 서버에 로깅할 수 있습니다.
안티패턴
아래 코드에서 httpClient 객체는 JavaScript 정책에서 데이터를
Sumo Logic 서버에 로깅하는 데 사용됩니다. 즉, 로깅 프로세스가 실제로 요청/응답 처리 중에 발생합니다. 이 접근 방식은 처리 시간을 추가하여 전반적인 지연 시간을 늘리므로 비생산적입니다.
LogData_JS:
<!-- /antipatterns/examples/1-4.xml --> <Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS"> <DisplayName>LogData_JS</DisplayName> <ResourceURL>jsc://LogData.js</ResourceURL> </Javascript>
LogData.js:
<!-- /antipatterns/examples/1-5.xml --> var sumoLogicURL = "..."; httpClient.send(sumoLogicURL); waitForComplete();
여기서 문제는 로깅 프로세스가 완료될 때까지 호출자의 작업을 일시중지하는 waitForComplete() 호출입니다. 유효한 패턴은 이 호출을 삭제하여 비동기식으로 만드는 것입니다.
영향
- JavaScript 정책을 통해 로깅 코드를 실행하면 API 요청의 지연 시간이 늘어납니다.
- 동시 요청은 메시지 프로세서의 리소스에 부담을 줄 수 있으며 결과적으로 다른 요청의 처리에 부정적인 영향을 미칠 수 있습니다.
권장사항
- MessageLogging 정책을 사용하여 데이터를 로그 서버 또는 서드 파티 로그 관리 서비스(예: Sumo Logic, Splunk, Loggly 등)로 전송/로깅합니다.
- 메시지 로깅 정책의 가장 큰 장점은 요청 클라이언트 앱에 응답이 다시 전송된 후에 실행되는 Post Client Flow에서 정의할 수 있다는 것입니다.
- Post Client Flow에서 이 정책을 정의하면 로깅 활동과 요청/응답 처리를 분리하여 지연 시간을 방지할 수 있습니다.
- JavaScript를 통해 로깅을 수행해야 하는 특정 요구사항 또는 이유가 있는 경우 (위에서 언급한 Post
Client Flow 옵션이 아님) 비동기식으로 수행해야 합니다. 즉,
httpClient객체를 사용하는 경우 JavaScript가 않도록waitForComplete구현하지 않도록 해야 합니다.