Bỏ qua tới nội dung
Mục lục

Tuỳ chọn cấu hình SDK

release, environment, lấy mẫu, bỏ qua lỗi, breadcrumb và tệp đính kèm tuỳ chọn, cách gửi và giới hạn hàng đợi.

Bản Markdown
Trong bài này

Các tuỳ chọn cho init (trình duyệt, React, phần client của TanStack Start) và cho callback của withBelvador (Cloudflare Workers, phần máy chủ của TanStack Start). Mọi tuỳ chọn trừ dsn đều không bắt buộc. Giá trị không hợp lệ quay về mặc định thay vì ném lỗi.

Tuỳ chọn chung#

Tuỳ chọnKiểuMặc địnhTác dụng
dsnstring— (bắt buộc trên trình duyệt)DSN của project. Trên Workers có thể lấy từ BELVADOR_DSN.
releasestringchưa đặtPhiên bản ứng dụng (số build, mã commit). Dùng để phát hiện lỗi tái phát và khớp source map.
environmentstring"production"production, staging, preview… Hiện và lọc được trên issue.
diststringchưa đặtMột biến thể build trong cùng release, nếu bạn phát hành nhiều biến thể.
sampleRatenumber 0–11Tỉ lệ event lỗi được gửi. 0.25 gửi khoảng một phần tư.
ignoreErrors(string | RegExp)[][]Lỗi cần bỏ. Chuỗi khớp một phần của message; RegExp được thử trên message.
captureAbortedbooleanfalseBáo cả việc người dùng đã huỷ: AbortError (hoặc lỗi do nó gây ra), hay lỗi máy chủ ném ra sau khi client đã ngắt kết nối. Mặc định tắt vì đóng tab không phải lỗi. TimeoutError luôn được báo. Từ 0.2.0.
tracePropagation{ targets: (string | RegExp)[], baggage?: boolean }tắtThêm header traceparent và sentry-trace vào request tới các URL này, để lỗi và lượt chạy job giữa các dịch vụ được liên kết. Xem Liên kết lỗi qua nhiều tầng. Từ 0.3.0.
beforeSend(event, hint) => event | nullchưa đặtSửa hoặc bỏ một event. Trả null để bỏ. Có thể trả về promise.
beforeBreadcrumb(crumb, hint) => crumb | nullchưa đặtSửa hoặc bỏ một breadcrumb.
maxBreadcrumbsnumber 0–10050Số breadcrumb gần nhất đi kèm event.
attachmentsbooleanfalseCho phép gửi tệp đính kèm. Tắt nghĩa là tệp đính kèm bị bỏ ngay trong ứng dụng.
privacyPolicyprivacyPolicy(json)chưa đặtÁp cả luật quyền riêng tư của project ngay trong app, lấy từ Sao chép dạng code trên trang Quyền riêng tư. Node vẫn áp các luật này dù có đặt hay không. Xem Bảo vệ dữ liệu. Từ 0.6.0.
previewbooleanfalseIn từng envelope đúng như sẽ gửi và không gửi gì. Trên máy chủ, BELVADOR_PREVIEW=1 có tác dụng tương tự. Từ 0.6.0.
debugbooleanfalseGhi các quyết định của SDK ra console. Nhớ tắt lại khi lên production.
disabledbooleanfalseGiữ SDK tắt, ví dụ khi chạy test.

beforeSend và beforeBreadcrumb chạy trước bước lọc bắt buộc của Belvador, nên không thể thêm dữ liệu mà bộ lọc sẽ xoá. Nếu hook ném lỗi hoặc promise bị từ chối, event hoặc breadcrumb đó bị bỏ.

TypeScript
init({  dsn: "https://<public-key>@ingest.belvador.dev/<project-id>",  release: import.meta.env.VITE_APP_VERSION,  environment: import.meta.env.MODE,  sampleRate: 1,  ignoreErrors: ["ResizeObserver loop completed with undelivered notifications"],  beforeSend(event) {    // Bỏ lỗi từ công cụ quản trị nội bộ.    if (event.request?.url?.includes("/internal-admin/")) return null;    return event;  },});

Breadcrumb là các bước trước khi lỗi xảy ra. Breadcrumb tự động tắt trong SDK của Belvador: chúng ghi lại người dùng bấm gì và gọi URL nào, có thể chứa dữ liệu cá nhân. Chỉ bật những gì bạn cần.

Trình duyệt (@belvador/browser, @belvador/react, client của TanStack Start):

TypeScript
init({  dsn: "https://<public-key>@ingest.belvador.dev/<project-id>",  instrument: { console: true, dom: true, fetch: true, xhr: true, history: true },});

Workers (callback của withBelvador): instrument: { console: true, fetch: true }.

Breadcrumb bạn tự thêm bằng addBreadcrumb luôn được ghi, không cần tuỳ chọn nào.

Tuỳ chọn chỉ có trên trình duyệt#

Tuỳ chọnMặc địnhTác dụng
instrumenttắt hếtBreadcrumb tự động, xem ở trên.
wrapBrowserApisfalseBọc timer, requestAnimationFrame và event listener để lỗi bên trong có thêm ngữ cảnh.
allowUrlsmọi URLChỉ báo lỗi có stack đến từ các URL script này (chuỗi hoặc RegExp).
denyUrlskhông cóBỏ qua lỗi từ các URL script này. URL của tiện ích trình duyệt luôn bị bỏ qua.
captureViewTransitionSkipsfalseBáo cả View Transition mà trình duyệt cố ý bỏ qua (trang bị ẩn, transition khác bắt đầu, skipTransition()). Mặc định tắt vì trình duyệt đang làm đúng thiết kế. Từ 0.3.0.
offlinefalseGiữ lỗi gửi hỏng vì mạng trong trình duyệt này (IndexedDB) và gửi khi có mạng lại hoặc ở lần tải trang sau. Xem Offline và gửi bền. Từ 0.6.0.

Hành vi riêng của Workers#

Callback của withBelvador trả về các tuỳ chọn như trên nhưng dsn không bắt buộc, thêm instrument: { console, fetch }. Giá trị không trả về sẽ lấy từ biến của Worker:

Thiết lậpLấy từ, theo thứ tự
DSNdsn trong callback → BELVADOR_DSN
Releaserelease trong callback → BELVADOR_RELEASE → CF_VERSION_METADATA.id
Environmentenvironment trong callback → BELVADOR_ENVIRONMENT → production
Công tắc tắtdisabled trong callback → BELVADOR_DISABLED = 1 hoặc true

Belvador cố định#

Những điều sau không đổi được, để SDK chỉ gửi lỗi và không bao giờ tự thêm dữ liệu cá nhân:

  • dữ liệu cá nhân do SDK tự thêm (sendDefaultPii) luôn tắt;

  • tracing, session replay, log và profiling tắt, dữ liệu của chúng bị bỏ;

  • không tunnel, không Spotlight, không tích hợp mặc định ngoài những gì Belvador thiết lập;

  • chuỗi bị cắt ở 8.192 ký tự.

Cách gửi#

Quy tắcGiá trị
Đang chờ gửitối đa 30 envelope, tổng 1 MiB (6 MiB khi có tệp đính kèm)
Một tệp đính kèmtối đa 5 MiB
Một lần gửihuỷ sau 10 giây
Lỗi mạng và 500/502/503/504tối đa 5 lần thử; mỗi lần chờ ngẫu nhiên, dưới 1, 2, 4, rồi 8 giây (full jitter, từ 0.6.0); luôn cùng envelope và cùng event id
503 có Retry-Afterchờ đúng như yêu cầu, tối đa 60 giây
429theo header giới hạn tốc độ: event mới thuộc loại đó bị bỏ ngay trong ứng dụng cho tới khi hết giới hạn
401 / 403khoá sai hoặc đã bị thu hồi: ngừng gửi trong suốt vòng đời của trang hoặc isolate Worker
Lưu trữchỉ trong bộ nhớ — không ghi gì xuống đĩa hay localStorage, trừ khi bạn bật offline (trình duyệt) hoặc dùng @belvador/spool (máy chủ)

Khi trang đang đóng, SDK gửi bằng keepalive trong giới hạn của trình duyệt (tối đa 60.000 byte, 15 request cùng lúc). Event không vừa, hoặc còn chờ lúc trang đóng, sẽ bị mất — trừ khi offline: true giữ chúng cho lần tải sau.

Bài viết về chủ đề này

Tất cả bài viết

Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev