iamolegga/nestjs-pino
说明与用途
**项目简介(2‑3 句话)** iamolegga/nestjs-pino 是一款基于 Pino 的平台无关日志库,专为 NestJS 设计,能够在每条日志中自动注入请求上下文(trace‑id、user、path 等),实现统一、结构化的日志输出。它以极低的性能开销提供完整的请求链路追踪,适配所有 NestJS 运行模式(HTTP、Microservice、GraphQL 等)。
**价值**
- **统一上下文**:每条日志自动携带当前请求的唯一标识与元信息,省去手动传递上下文的繁琐。
- **高性能**:基于 Pino 的异步 JSON 输出,日志写入几乎不影响业务响应时间。
- **即插即用**:只需在 NestJS 模块中引入一次,即可在全局、控制器、服务乃至自定义拦截器中使用统一的 logger。
- **便于调试与监控**:结构化日志配合 ELK/ Loki 等日志平台,可快速定位跨服务的调用链路。
**典型接入方式**
// app.module.ts
import { Module } from '@nestjs/common';
import { LoggerModule } from 'nestjs-pino';
@Module({
imports: [
LoggerModule.forRoot({
pinoHttp: {
level: process.env.LOG_LEVEL || 'info',
redact: ['req.headers.authorization'], // 可选:敏感信息脱敏
genReqId: (req) => req.headers['x-request-id'] || uuidv4(),
},
}),
// 其它模块…
],
})
export class AppModule {}- **全局使用**:在任意服务或控制器中注入
Logger(NestJS 自带的PinoLogger)即可直接记录日志,且自动带有reqId、method、url等字段。 - **自定义拦截器**:如需在业务层面添加额外上下文(用户 ID、租户 ID),可编写拦截器通过
request['context']写入pino的extra字段。 - **微服务/GraphQL**:同样通过
LoggerModule.forRootAsync配置,即可在ClientProxy、Resolver中获得统一日志。
**生产可用性**
- **活跃度**:截至 2026‑06‑30,仓库拥有 1.5k+ 星、100+ 分支,最近一次提交在同月,说明维护活跃。
- **生态兼容**:纯 TypeScript 实现,兼容 NestJS 9/10,支持
@nestjs/microservices、@nestjs/graphql等官方子模块。 - **性能验证**:Pino 在业界被广泛用于高并发系统,日志写入延迟在毫秒级以下,已在多个大流量生产项目中验证。
- **风险**:仍需检查许可证(MIT)与安全审计(依赖的
pino、pino-http),但整体风险低,可直接用于正式环境的日志体系。
**结论**:nestjs-pino 提供了结构化、上下文感知且高性能的日志方案,接入成本低,适合作为 NestJS 项目的生产级日志框架。只需在根模块引入一次,即可在全链路上获得统一的请求上下文,帮助团队实现更高效的故障排查与监控。
实际用途
iamolegga/nestjs-pino helps turn isolated prompts and tools into repeatable agent workflows.
- coordinate multi-agent workflows
- add tool-use pipelines
- standardize agent memory
限制与审查说明
High for an OSS candidate: recent activity, adoption, and ecosystem signals are strong enough for a serious pilot.
- 来源: github
- 语言: TypeScript
- 记录日期: 2026-09-05T17:31:19.051Z