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.
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ọn | Kiểu | Mặc định | Tác dụng |
|---|---|---|---|
dsn | string | — (bắt buộc trên trình duyệt) | DSN của project. Trên Workers có thể lấy từ BELVADOR_DSN. |
release | string | chưa đặt | Phiê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. |
environment | string | "production" | production, staging, preview… Hiện và lọc được trên issue. |
dist | string | chưa đặt | Một biến thể build trong cùng release, nếu bạn phát hành nhiều biến thể. |
sampleRate | number 0–1 | 1 | Tỉ 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. |
captureAborted | boolean | false | Bá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ắt | Thê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 | null | chưa đặt | Sửa hoặc bỏ một event. Trả null để bỏ. Có thể trả về promise. |
beforeBreadcrumb | (crumb, hint) => crumb | null | chưa đặt | Sửa hoặc bỏ một breadcrumb. |
maxBreadcrumbs | number 0–100 | 50 | Số breadcrumb gần nhất đi kèm event. |
attachments | boolean | false | Cho 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. |
privacyPolicy | privacyPolicy(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. |
preview | boolean | false | In 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. |
debug | boolean | false | Ghi các quyết định của SDK ra console. Nhớ tắt lại khi lên production. |
disabled | boolean | false | Giữ 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ỏ.
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#
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):
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ọn | Mặc định | Tác dụng |
|---|---|---|
instrument | tắt hết | Breadcrumb tự động, xem ở trên. |
wrapBrowserApis | false | Bọc timer, requestAnimationFrame và event listener để lỗi bên trong có thêm ngữ cảnh. |
allowUrls | mọi URL | Chỉ báo lỗi có stack đến từ các URL script này (chuỗi hoặc RegExp). |
denyUrls | khô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. |
captureViewTransitionSkips | false | Bá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. |
offline | false | Giữ 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ập | Lấy từ, theo thứ tự |
|---|---|
| DSN | dsn trong callback → BELVADOR_DSN |
| Release | release trong callback → BELVADOR_RELEASE → CF_VERSION_METADATA.id |
| Environment | environment trong callback → BELVADOR_ENVIRONMENT → production |
| Công tắc tắt | disabled 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ắc | Giá trị |
|---|---|
| Đang chờ gửi | tối đa 30 envelope, tổng 1 MiB (6 MiB khi có tệp đính kèm) |
| Một tệp đính kèm | tối đa 5 MiB |
| Một lần gửi | huỷ sau 10 giây |
Lỗi mạng và 500/502/503/504 | tố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-After | chờ đúng như yêu cầu, tối đa 60 giây |
429 | theo 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 / 403 | khoá 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- Lọc PII trong error monitoring mà không mất ngữ cảnhMột bộ lọc dữ liệu thật trên 16 mẫu lỗi giả lập: luật theo mẫu xoá được gì, bỏ sót gì, xoá nhầm gì, và bạn nên tự thêm gì trong beforeSend.
- Unhandled promise rejection và lỗi đã bắt: công cụ theo dõi lỗi nhận được gì14 kiểu lỗi trình duyệt chạy qua công cụ theo dõi lỗi: cái nào đến nơi, cái nào biến mất khi bắt rồi log, và vì sao reject bằng chuỗi làm mất stack.
Thấy chỗ sai hoặc thiếu? Gửi cho chúng tôi: hello@belvador.dev