附件

了解 Sentry 如何在同一请求中存储额外文件作为事件附件。

Sentry 可以通过存储额外文件(如配置文件或日志文件)作为附件来丰富您的事件,以便进一步调查。

首先,您需要像往常一样导入 SDK:

Copied
import * as Sentry from "@sentry/browser";

附件存在于 Scope 中,并将随所有事件一起发送。

Copied
// Add an attachment
Sentry.getCurrentScope().addAttachment({
  filename: "attachment.txt",
  data: "Some content",
});

// Clear attachments
Sentry.getCurrentScope().clearAttachments();

附件具有以下字段:

filename

文件名是必需的,并将在 sentry.io 中显示。

data

附件的内容是必需的,可以是 stringUint8Array

contentType

此附件中存储的内容类型。可以使用任何 MIME 类型,默认值为 application/octet-stream

mimetype

确定附件在 Sentry UI 中如何渲染的具体媒体内容类型。我们目前支持并可以渲染以下 MIME 类型:

  • text/plain
  • text/css
  • text/csv
  • text/html
  • text/javascript
  • text/jsontext/x-jsonapplication/jsonapplication/ld+json
  • image/jpeg
  • image/png
  • image/gif

您可以通过 beforeSend钩子或全局事件处理器,在事件发送之前添加、删除或修改附件。

Copied
Sentry.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
  beforeSend: (event, hint) => {
    hint.attachments = [
      { filename: "screenshot.png", data: captureScreen() },
    ];
    return event;
  },
});

Sentry.addEventProcessor((event, hint) => {
  hint.attachments = [{ filename: "log.txt", data: readLogFile() }];
  return event;
});

Sentry 允许每个压缩请求最多 20MB,每个事件最多 100MB 的未压缩附件(包括崩溃报告文件(如果适用)。超过此大小的上传将被拒绝,并立即丢弃数据,返回 HTTP 错误 413 Payload Too Large。要添加更大的文件或更多文件,请考虑使用二级存储选项。

附件会保留 30 天;如果您的总存储量超过了配额,附件将不会被存储。您可以随时删除附件或其包含的事件。删除附件不会影响您的配额——Sentry 在存储附件时即计入配额。

了解更多关于附件如何影响您的 配额

要限制对附件的访问,请导航到组织的 常规设置,然后选择 附件访问 下拉菜单以设置适当的访问权限——任何组织成员、组织计费所有者、成员、管理员、经理或所有者。

Attachments Access

默认情况下,当存储启用时,所有成员都可访问附件。如果成员没有项目访问权限,则无法下载附件;按钮将在 Sentry 中变灰。成员只能查看附件已存储。

附件显示在 问题详情 页面底部,针对所显示的事件。

Attachments Access Denied

或者,附件也会出现在 问题详情 页面的 附件 标签下,在这里您可以查看附件的 类型 以及关联的事件。单击事件 ID 以打开该特定事件的 问题详情

Attachments List Example