@easyweb/博客
每个 Easyweb 服务都有一个皮诺配置, 请求范围上下文 不需要用手进行线程、 HTTP 访问日志和编辑 a 木头在离开舱前需要.
为什么它存在
src/lib/logger.ts 被复制成21种服务 它已经漂入两个
变体; domain 财务报告和审定财务报表 moderation 两者都默认服务名称为
"billing-service"和七支队伍 缺少警卫停止
皮诺 -普雷蒂的工人线 使杰斯特出口1 在绿色报告.
更大的问题是相互关系. getLogger(req) 将孩子送还
requestId 并不得不通过 以明确 log 参数。 大约
100个呼叫站点做到了这一点;其他的~1,300通过模块级根登录
记录器和没有请求的id .
混合剂
createServiceLogger 安装一个皮诺 mixin 读取一个 AsyncLocalStorage
存储。 每个现有的呼叫站点都会在不编辑的情况下获得环境字段:
// unchanged call site
log.info({ projectId }, "Project created");
// what it now emits
{ "service": "project-service", "requestId": "…", "userId": "…", "projectId": "…" }
pino 将调用站点所通过对象下的混音合并,所以明确 字段总是胜过环境.
混合手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平手平. 皮诺默认合并为
Object.assign(mixinObject, mergeObject)和1.0.1 返回现场商店 -
所以每个呼叫的字段 都被写进请求的背景 并出现在
该请求的后行 err 包含。 也跳过任何密钥
日志已绑定, 这就是为什么 getLogger(req) 线条或订阅者
child({ requestId, queue }) 现在带行 requestId 一次,不是两次.
使用量
// src/lib/logger.ts
import { createServiceLogger } from "@easyweb/logging";
import config from "../config";
const { logger, getLogger } = createServiceLogger({
serviceName: config.serviceName,
logLevel: config.logLevel,
});
export { getLogger };
export default logger;
// src/app.ts — the access log needs the scope, so it goes after requestContext
app.use(requestContext);
app.use(createHttpLogger(logger));
在请求之外开设一个范围——一个BullMQ工作,一个经纪人处理者:
await runWithContext({ jobId: job.id, job: job.data.type }, () => handle(job));
添加到已运行的瞄准镜中.. authenticate 一旦发生这种情况
已校验符号 :
bindContext({ userId: decoded.sub });
访问日志
每完成请求一行, msg: "request"。 。 。 .
route 是路径 模式 (单位:千美元)/billing/me/invoices/:invoiceId),以及该
是一种合同而不是一种便利:RED指标是记录规则
上面,所以每个值 将使系列无限制. path 携带
真正的路径旁边,从 req.originalUrl ——快取挂载前缀
关 req.path 在路由器发送时, 读取到最后调用
命名一个不存在的路由.
查询字符串从未被登录 . ?token=… 在核查路线是直播
证书.
/health, (中文(简体) ), /livez, (中文(简体) ), /readyz 财务报告和审定财务报表 /metrics 被跳过
否则将使准备状态探测器成为集群中最大的对流.
编辑
两种机制,涵盖不同的形状:
REDACT_PATHS——皮诺的固定路径修饰,为我们自己的有效载荷. 密码、令牌、饼干和认证信头,在最高一级和一级 下来.scrubResponseData- 递归式、深度和尺寸的走过err.response.data对于有效载荷,我们无法控制。 仙地特 花纹 复发, Meta、Apify、Cloudflare和Gitea都把个人数据放入错误的正文中 407 (韩语)logger.error({ err })呼叫站点将其逐字输入日志 未被盖.
err.response.data 上限为 2 KB 之后 洗涤,而不是它 -
切换首先会保持任何合适的, 对于失败的收费是
支付者街区.
故意不编辑的
电子邮件地址。 认证服务记录 三行一行——注册,a
以及Google注册
审计线索 : userId 单凭自己无法回答"他们注册了哪个地址"
还有... ... 接触是真实的,并以保留原木为限。 见
docs/platform/ADR-0001。 。 。 .