Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Ghi nhật ký là một trong những cách hiệu quả để gỡ lỗi. Thông tin về yêu cầu API, chẳng hạn như tiêu đề, tham số biểu mẫu, tham số truy vấn, biến động, v.v., đều có thể được ghi lại để tham khảo sau này. Thông tin này có thể được ghi lại cục bộ trên Bộ xử lý thông báo (chỉ Apigee Edge cho Đám mây riêng tư) hoặc trên các máy chủ của bên thứ ba như Sumo Logic, Splunk hoặc Loggly.
Antipattern
Trong mã dưới đây, đối tượng httpClient trong chính sách JavaScript được dùng để ghi dữ liệu vào một máy chủ Sumo Logic. Điều này có nghĩa là quy trình ghi nhật ký thực sự diễn ra trong quá trình xử lý yêu cầu/phản hồi. Phương pháp này phản tác dụng vì làm tăng thời gian xử lý, do đó làm tăng độ trễ tổng thể.
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();
Nguyên nhân ở đây là lệnh gọi đến waitForComplete(), lệnh gọi này sẽ tạm ngưng các thao tác của phương thức gọi cho đến khi quá trình ghi nhật ký hoàn tất. Một mẫu hợp lệ là tạo mẫu không đồng bộ này bằng cách loại bỏ lệnh gọi này.
Tác động
- Việc thực thi mã ghi nhật ký thông qua chính sách JavaScript sẽ làm tăng độ trễ của yêu cầu API.
- Các yêu cầu đồng thời có thể gây áp lực lên các tài nguyên trên Trình xử lý thông báo và do đó ảnh hưởng tiêu cực đến quá trình xử lý các yêu cầu khác.
Phương pháp hay nhất
- Sử dụng chính sách MessageLogging để chuyển/ghi dữ liệu vào máy chủ Nhật ký hoặc các dịch vụ quản lý nhật ký của bên thứ ba, chẳng hạn như Sumo Logic, Splunk, Loggly, v.v.
- Ưu điểm lớn nhất của chính sách Ghi nhật ký tin nhắn là chính sách này có thể được xác định trong Luồng ứng dụng khách đăng, được thực thi sau khi phản hồi được gửi lại cho ứng dụng khách yêu cầu.
- Việc xác định chính sách này trong quy trình Post Client giúp tách biệt hoạt động ghi nhật ký và quá trình xử lý yêu cầu/phản hồi, nhờ đó tránh được độ trễ.
- Nếu có một yêu cầu cụ thể hoặc lý do để ghi nhật ký thông qua JavaScript (không phải lựa chọn quy trình Post Client được đề cập ở trên), thì bạn cần thực hiện việc này một cách không đồng bộ. Nói cách khác, nếu đang sử dụng một đối tượng
httpClient, bạn cần đảm bảo rằng JavaScript KHÔNG triển khaiwaitForComplete