我在 JS 应用程序(Web 扩展)中使用 Sentry 来跟踪错误。现在我想要一些错误之前发生的事件的日志,因此我添加了
scope.captureMessage()
调用。
我有一个“beforeSend”回调可以看到并非所有消息都已发送。是因为采样率也应用于消息吗?
这是初始化代码:
const manifest = browser.runtime.getManifest();
// filter integrations that use the global variable
const integrations = getDefaultIntegrations({}).filter(
(defaultIntegration: { name: string }) => {
return ![
"BrowserApiErrors",
"TryCatch",
"Breadcrumbs",
"GlobalHandlers"
].includes(defaultIntegration.name);
}
);
const client = new BrowserClient({
dsn,
environment,
release: info.addonVersion,
transport: makeFetchTransport,
stackParser: defaultStackParser,
initialScope: {
tags: {
manifestVersion: manifest.manifest_version
}
},
integrations,
sampleRate: sampleRate ?? 0.01,
beforeSend(event) {
console.warn("Event", event);
lastEvent = event;
return event;
}
});
scope = new Scope();
scope.setClient(client);
client.init();
这是我发送消息的方式:
scope.captureMessage(message);
如何才能传递所有消息?是否可以将某些“消息采样率”设置为 1?是否可以仅在发生特定错误时才发送消息(以减少流量)? Sentry 消息是否有配额或单位费用限制?
您无法专门调整消息的采样率,但是,对于您的用例(在错误发生之前进行记录),我建议使用
Sentry.addBreadcrumb()
。
例如:
Sentry.addBreadcrumb({
message: 'your log message',
});