@12-apps/observability-backend

中文文档
1.9.0发布于 2026/08/25MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3.3万

服务器端的错误报告在Sentry上,附在日志器上而不是呼叫站点:一个转发出错/警告的温斯顿运输机,一个在任意深度按键进行编辑的PII擦洗机,以及一个故意退出的冲洗机. 关闭, 除非 SENTRY DSN 已设定, 所以 dev, C

中文使用文档
文档目录6 节
  1. 为什么它存在
  2. 使用量
  3. 除非设定了 DSN , 否则它将被关闭
  4. 临 二
  5. 为什么船会编成
  6. 测试

@12-apps/observability-backend

服务器侧错误报告 Sentry, 因为只有一个环境, 没有人可以附加 一个调试器.

它有一个浏览器对应, @12-apps/observability-frontend它们是两个 软件包而不是一个,因为它们完全没有代码,只有环境 变量——此侧是 @sentry/node 加号 winston-transport另一个是 @sentry/react 加上反应,一个包就可以装上温斯顿运输 每个SPA的依赖树和每个服务器的回放。 他们是独立的 (或运行 没有另一个) 但故意分享 SENTRY_ENVIRONMENT 财务报告和审定财务报表 SENTRY_RELEASE,所以浏览器事件 及其背后的500 降落在同一 同一建筑下的环境.

为什么它存在

生产失败曾留下一个痕迹: 容器,随它而死亡,并且只能在SSH上达到。 所以,唯一的办法 学习 为什么 有些东西破解了 是为了了解源头和猜想 4次连续错误的诊断就是代价。 这条线本来可以 在第一次尝试中结束它 一直存在; 没有人能读到它.

使用量

import { sentryTransport, flushReporter, scrub } from "@12-apps/observability-backend";

const reporter = sentryTransport();
const logger = winston.createLogger({
  transports: [consoleTransport, ...(reporter ? [reporter] : [])],
});

它挂出LOGGER,而不是每个呼叫网站. 共享日志已经 漏斗,每个功能的 log.error 经历了一个温斯顿的例子,所以 在此附加意味着新模块在登录时被覆盖,没有任何内容 记住 备选案文,a captureException 除了每个 throw,这是一条规则 第一次有人忘记它就衰败了.

注意这个陷阱意味着: console.error 未联系到记者. 温斯顿是漏斗;任何写过它的东西 到达一个容器的积分和 没有别的地方.

导出它会做什么
sentryTransport()页:1 winston-transport 安装,或 null 当报告关闭时
sentryEnabled()是否为此进程配置了 DSN
flushReporter(timeoutMs?)等待已排队的事件; 在故意退出前拨打
scrub(value)将上下文对象折叠成信件时, 任意深度按密钥编辑 PII

flushReporter() 事情比看起来要重要 SDK批发 同步,所以 log.error(…) 接下来是 process.exit(1) 流泪过程 与事件仍在记忆中 大部分,因为一个死在靴子上的过程 留下了别的东西.

除非设定了 DSN , 否则它将被关闭

没有 SENTRY_DSN,没有运输,没有网络。 Dev CI和每一次测试都保持安静 和离线。 授权是一个部署决定,从来不是一个代码——这也是 是什么让测试套房的故意故障 无法填补问题跟踪器.

变量说明
SENTRY_DSN唯一需要的一个。 只写摄入.
SENTRY_ENVIRONMENT倒计时 NODE_ENV,则 production
SENTRY_RELEASE用于构建错误
SENTRY_TRACES_SAMPLE_RATE默认为 0 ——追踪每段计费,回答"多慢",而这个答案是"抛出的东西"

临 二

scrub() 按任何深度而不是图案匹配值编辑: a 巴西的CPF是11位数字,许多身份证也值得保留。 药品和 量是故意活下来的——一种能吃到量的洗涤剂会留下每件事 不可诊断.

这不是防御性的装饰。 写给它的泄漏是供应商的错误 保留上游反应机构,在被拒绝付款时,该反应机构携带 付款人的名字,电子邮件和税务id. sendDefaultPii 无论DSN如何 都被扣留 所以请求尸体 饼干和IP从不随身携带.

运输也送来 消息 作为字符串而不是原始元 对象: Winston 格式化运行 util.inspect(…, { depth: 5 }) 超过额外 这恰恰是供应商的有效载荷如何到达 第三方.

为什么船会编成

不同于此 repo 中的大多数软件包, 此软件包发布 dist (双重CJS+ESM与 .d.ts)而不是TypeScript源. 有两个原因,两个都是负载的:

  1. 节点拒绝剥去下面的类型 node_modules (单位:千美元)ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING) (中文(简体) ). 一个服务器导入此选项 软件包从注册处得到一个硬故障 .ts它确实 没有 在工作空间中失败,其中 pnpm 链接到软件包和节点解析 a 外部真实路径 node_modules - 所以虫子会首先出现在 消费者,出版后.
  2. 常见的JS消费者存在. @12-apps/shared-helpers cJS 有经典 moduleResolution,这忽略了 exports 完整地图并读取 main编号 :types。 。 。 .

测试

pnpm --filter @12-apps/observability-backend test

没有到达网络:套房声称有两个安全属性—— 报告可以关闭,它转发的内容可以被清除.

版本与发布记录

@12-apps/observability-backend 共发布 16 个版本,首次发布于 2026/08/07;过去 12 个月发布了 16 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.9.0latest2026/08/252 个月前
1.8.12026/08/212 个月前
1.8.02026/08/092 个月前
1.7.02026/08/092 个月前
1.6.02026/08/082 个月前
1.5.32026/08/082 个月前

关于 @12-apps/observability-backend 的常见问题

@12-apps/observability-backend 是什么?

服务器端的错误报告在Sentry上,附在日志器上而不是呼叫站点:一个转发出错/警告的温斯顿运输机,一个在任意深度按键进行编辑的PII擦洗机,以及一个故意退出的冲洗机. 关闭, 除非 SENTRY DSN 已设定, 所以 dev, C

如何安装 @12-apps/observability-backend?

在项目目录运行 npm install @12-apps/observability-backend,或使用 pnpm add / yarn add / bun add。

@12-apps/observability-backend 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@12-apps/observability-backend 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@12-apps/observability-backend 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@12-apps/observability-backend 可以商用吗?

@12-apps/observability-backend 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@12-apps/observability-backend 的下载量有多少?

根据 npm 官方下载统计,@12-apps/observability-backend 在 2026/10/04 – 2026/11/02 这 30 天内被下载 32,596 次,日均约 1,087 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@12-apps/observability-backend 还在维护吗?

最新版本 1.9.0 发布于 2026/08/25(2 个月前);至今共发布 16 个版本,其中过去 12 个月发布了 16 个;首次发布于 2026/08/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。