【问题标题】:MessageLogging Policy or new JavaScript fileMessageLogging 策略或新的 JavaScript 文件
【发布时间】:2020-03-07 01:41:05
【问题描述】:
我正在尝试实施 Apigee 日志记录来记录多个属性,例如客户端 IP、总处理延迟和其他要从请求和响应中检索的自定义标头。它们分为 BaseLog 属性、SysLog 属性和 AppLog 属性,后者中的每一个都写在 BaseLog 之上。我想知道记录这些的最佳方法是什么 - 使用 MessageLogging Policy 或使用自定义 JS 代码来提取和填充变量会更好吗?
最后,我必须将日志发送到 Splunk 服务器。怎么做呢?
任何输入都会有所帮助!谢谢。
【问题讨论】:
标签:
javascript
logging
apigee
【解决方案1】:
我使用 JavaScript Policy 来设置变量,我想通过 context.setVariable("variableName", value); 将它们写入日志文件(例如 requestDateTime、ip 等)
然后在 MessageLogging Policy 中引用这些变量,例如
<Message>{requestDateTime}|{client.ip}|{request.content}|{elapsTime}</Message>
实际上,Apigee 有很多有用的变量,如果您不想在流程中添加更多 JS 策略,可以直接使用它,但对于我的情况,我想在我的日志中写很多值,其中一些必须与其他变量连接,以便在 MessageLogging 中引用之前轻松设置它。
不过,我只是分享一下我使用的方法。
希望对你有用。
【解决方案2】:
最好尽量减少 JavaScript 或任何其他扩展策略的使用,因为每次执行这些扩展策略时都会在消息处理器中生成一个线程,因此存在死锁风险,因为线程池始终存在限制。
Apigee 专门为异步方式的日志记录提供了消息日志记录策略,因此您应该尝试在 Post 客户端流程中设置所有内容,并尝试对任何类型的变量分配使用分配消息策略而不是扩展策略。
希望对您有所帮助!