获取更多动态,关注公众号:黑客下午茶

Attachments

Sentry 可以通过在事件旁边存储其他文件(例如日志文件)作为附件来增强崩溃报告。 附件使崩溃中的文件不仅可以上传到Sentry,而且可以持久保存以进行进一步调查。

Uploading Attachments

要添加 attachment,请创建一个事件处理器(event processor),该事件处理器以 multipart form data 请求的形式将文件上传到附件端点。这需要使用其 ID 将附件与事件相关联:

Copied
public attachmentUrlFromDsn(dsn: Dsn, eventId: string) {
  const { host, path, projectId, port, protocol, user } = dsn;
  return `${protocol}://${host}${port !== '' ? `:${port}` : ''}${
    path !== '' ? `/${path}` : ''
  }/api/${projectId}/events/${eventId}/attachments/?sentry_key=${user}&sentry_version=7&sentry_client=custom-javascript`;
}

Sentry.addGlobalEventProcessor((event: Event) => {
  try {
    const client = Sentry.getCurrentHub().getClient();
    const endpoint = attachmentUrlFromDsn(
      client.getDsn(),
      event.event_id
    );
    const formData = new FormData();
    formData.append(
      'my-attachment',
      new Blob([JSON.stringify({ logEntries: ["my log"] })], {
        type: 'application/json',
      }),
      'logs.json'
    );
    fetch(endpoint, {
      method: 'POST',
      body: formData,
    }).catch((ex) => {
      // we have to catch this otherwise it throws an infinite loop in Sentry
      console.error(ex);
    });
    return event;
  } catch (ex) {
    console.error(ex);
  }
});

附件存留 30 天;如果超出了配额中包含的总存储空间,则不会存储附件。您可以随时删除附件或其包含的事件。删除附件不会影响您的配额(quota) - Sentry 存储附件后立即将其计入您的配额。

详细了解附件如何影响您的 quota

Access to Attachments

要限制对附件的访问,请导航到您组织的 General Settings,然后选择 Attachments Access 下拉菜单来设置适当的访问权限 - 您的组织的任何成员、组织帐单所有者、成员(member)、管理员(admin)、经理(manager)或所有者(owner)。

Attachments Access

默认情况下,启用存储后,将授予所有成员访问权限。如果成员无权访问该项目,则无法下载附件。该按钮将在 Sentry 中显示为灰色。成员只能查看附件已存储。

Viewing Attachments

附件显示在所显示事件的 Issue Details 页面的底部。

Attachments Access Denied

或者,附件也会显示在 Issue Details 页面上的 Attachments 选项卡中,您可以在其中查看附件的类型以及相关事件。单击 Event ID,以打开该特定事件的 Issue Details 信息。

Attachments List Example

You can edit this page on GitHub.