@beignet/ professor-logger-pino (英语)
运行时间 : Beignet需要Node.js 22.12或更新. Bun是可选的.
[叹息] Beignet是实验性的α软件. 这个
0.0.x包行为早期 评估,且在框架结算时,API可能在发布之间发生变化.
皮诺支持 LoggerPort 为Beignet提供供应商.
需要时使用此软件包 ctx.ports.logger 由皮诺支持,同时保留
取决于稳定状态的应用程序代码 LoggerPort 界面从
@beignet/core/ports。 。 。 .
createPinoLoggerProvider(...) 返回稳定 PinoLoggerProvider 类型.
LoggerPinoConfig 描述其已验证的配置; Zod 方案尚存
内部.
安装
bun add @beignet/core @beignet/provider-logger-pino pino
漂亮的开发日志是可选的 :
bun add -d pino-pretty
设置
Beignet 启动器已经注册 createPinoLoggerProvider() 内
server/providers.ts。在保存其他条目时配置该条目
提供者和现有的服务器上下文 :
// server/providers.ts (Pino entry excerpt)
createPinoLoggerProvider({ level: "info", format: "json", service: "api" }),
工厂是从 @beignet/provider-logger-pino在手动操作中
组装的应用程序, 添加导入并注册一个实例
提供者列表 。 见 伐木指南 (单位:千美元)
完成待办事宜使用大小写和校验步骤.
提供者安装 ctx.ports.logger。 。 。 .
它冲刷供应商拥有的 Pino 记录器 server.stop() 如此缓冲
目的地在关闭前会排出水 关闭工人支持的漂亮地方
当Beignet创建它时,运输.
每个结构化的元数据对象和孩子捆绑通过Beignet的
默认在到达皮诺之前进行递归性证书编辑.
beignet doctor --strict 检查安装的 Pino 日志提供者是
登记在册 server/providers.ts。 。 。 .
环境
提供者读 LOG_- 前置环境变量:
| 变量 | 默认 | 说明 |
|---|---|---|
LOG_LEVEL | info | trace, (中文(简体) ), debug, (中文(简体) ), info, (中文(简体) ), warn, (中文(简体) ), error,或 fatal |
LOG_FORMAT | json | json 或者说 pretty |
LOG_SERVICE | 无 | 在日志绑定中添加了可选服务名称 |
LOG_TIMESTAMP | true | 包含 ISO 时间戳; 接受 true 或者说 false |
LOG_FORMAT=pretty 需求 pino-pretty。如果无法提供,则提供者
回到JSON伐木 发出警告.
使用 createPinoLoggerProvider(...) 当您想要直接传递选项时
而不是只依赖 LOG_* (原始内容存档于2018-10-21). Env vars. 选项覆盖源代码
值 :
import { createPinoLoggerProvider } from "@beignet/provider-logger-pino";
// Replace the existing provider call with these options.
const loggerProvider = createPinoLoggerProvider({
level: "debug",
format: "pretty",
service: "api",
timestamp: true,
});
直接适配器
使用 createPinoLogger(...) 当应用程序拥有皮诺配置,运输,
或目的地:
import { createPinoLogger } from "@beignet/provider-logger-pino";
import pino from "pino";
const destination = pino.destination("./app.log");
const pinoLogger = pino({ level: "info" }, destination);
const logger = createPinoLogger({ logger: pinoLogger });
直通工厂只把供应的平野伐木机改装成 LoggerPort; 数据
呼叫者拥有冲洗和目的地关闭。 它适用同样的默认
作为生命周期提供者的元数据和有儿童约束力的编辑.
使用量
ctx.ports.logger.info("Post published", {
postId: post.id,
actorId: ctx.actor.type === "user" ? ctx.actor.id : undefined,
});
const log = ctx.ports.logger.child({ requestId: ctx.requestId });
log.error("Failed to publish post", { error });
出口
| 导出 | 目的 |
|---|---|
createPinoLogger(options) | 调整一个应用的 Pino 日志 LoggerPort |
CreatePinoLoggerOptions | 备选方案 createPinoLogger() |
createPinoLoggerProvider(options?) | 提供者工厂; 省略选项使用 LOG_* 嵌入值 |
CreatePinoLoggerProviderOptions | 备选方案 createPinoLoggerProvider() |
LoggerPinoConfig | 验证的提供者配置类型 |
LoggerPort | 从 @beignet/core/ports |
LogLevel | 从 @beignet/core/ports |
已安装端口
提供者提供 ctx.ports.logger,标准贝格网
LoggerPort启用 createPinoLogger(...) 当应用基础设施需要拥有时
基本的 Pino 日志; 应用程序工作流程应继续依赖于
马厩港.
仪器
此提供者不为每次日志调用记录 devtools 提供者事件 。 日志
是主要产出。 在外部提供者上使用提供者仪器
工作,包括: requestId, (中文(简体) ), traceId、演员、租户或特色
当这些字段是有用的操作背景时,日志绑定中的元数据.
失败行为
无效 LOG_* 配置在提供者设置中失败 。 若为
LOG_FORMAT=pretty 配置时没有 pino-pretty,提供者倒下
向 JSON 记录并发出警告,而不是启动失败 。 供应商拥有
记录器冲出或运输关闭故障从 server.stop() 作为
提供者关闭出错 .
当地测试
使用 LOG_FORMAT=pretty 地方发展 pino-pretty 已安装.
使用内存或假 LoggerPort 当断言不应该使用时
依赖于控制台输出.
部署说明
在生产中使用 JSON 日志, 除非运行时间明确期望格式化
语句。 设定 LOG_SERVICE 包括请求/跟踪元数据
从Beignet的上下文中,日志与devtools、提供者活动以及
错误报告 .
默认的编辑覆盖敏感的结构密钥, 如令牌, 密码,
饼干、授权标题、会话和证书,包括嵌入式
物品和儿童绑定。 日志信件没有被重写, 所以从不插入
输入信件字符串的秘密。 使用 redactValue(...) 在建造前
消息,或当应用程序特定字段需要更严格的编辑时.
下一个读取
- Docs 站点记录指南 : https://beignetjs.com/logb (中文(简体) )
- 供应商: https://beignetjs.com/ 提供者
- 皮诺文件: https://getpino.io/ (英语)
许可证
麻省理工学院