如何强制DataDog立即上报日志,无需等待14秒延迟
根因说明
Datadog 浏览器端日志 SDK 默认采用批量聚合上报策略,默认攒够20条日志或等待30秒才触发一次上报,你观察到的14秒延迟就是该批量策略导致的。
解决方案
方案1:修改初始化配置,实现全局实时上报
在初始化参数中新增3项配置即可:
batchSize:设置为1,只要产生1条日志就满足上报触发阈值uploadFrequency:设置为0,完全取消定时上报的等待时长sendLogsBeforeUnload:设置为true,开启页面卸载前的兜底上报逻辑,会调用浏览器sendBeacon接口尽可能保证日志发送完成
修改后的初始化代码示例:
datadogLogs.init({ clientToken: 'TOKEN', sampleRate: 100, forwardErrorsToLogs: false, // 新增实时上报相关配置 batchSize: 1, uploadFrequency: 0, sendLogsBeforeUnload: true });
方案2:仅针对高优先级日志强制立即上报
如果你的应用日志上报量较大,全量开启实时上报会产生过多网络请求,可以仅在上报会导致用户退出的高优先级故障日志后,主动调用datadogLogs.flush()方法,立即清空当前日志队列完成上报,不需要等待任何批量阈值触发。
代码示例:
datadogLogs.logger.log( 'Something went wrong', { env: 'mySpecialEnv' }, StatusType.warn ); // 主动触发强制上报 datadogLogs.flush();
注意
方案1会导致所有日志都单条独立上报,适合日志量不大的场景;日志量大的场景更推荐用方案2,只对核心故障日志做强制上报,兼顾性能和上报可靠性。
内容的提问来源于stack exchange,提问作者Tom Smykowski
相关产品推荐
相关产品推荐

