如何为Fastify Logger添加类型安全的自定义日志级别?
实现Fastify自定义日志级别的类型安全扩展
要解决TypeScript报错并实现类型安全的silly日志级别扩展,按以下步骤操作:
1. 扩展Fastify日志类型声明
通过TypeScript的模块扩展机制,给FastifyBaseLogger接口添加silly方法的类型定义:
declare module 'fastify' { interface FastifyBaseLogger { // 支持字符串消息格式 silly(message: string, ...args: unknown[]): void; // 支持对象+消息的重载格式 silly(obj: object, message?: string, ...args: unknown[]): void; } }
将这段代码放在项目的类型声明文件中(比如src/types/fastify.d.ts),并确保tsconfig.json的include数组包含该文件,让TypeScript能识别扩展的类型。
2. 配置Fastify启用自定义日志级别
Fastify默认使用Pino日志库,创建实例时通过logger配置添加silly级别:
import fastify from 'fastify'; const app = fastify({ logger: { level: 'silly', // 全局日志级别设为silly,确保该级别日志能输出 customLevels: { silly: 50 // Pino中级别数值越大优先级越低,silly通常设为最高数值 }, // 可选:配置终端输出时的颜色,提升可读性 levelColors: { silly: 'magenta' } } });
3. 验证类型安全
完成上述配置后,调用app.log.silly('这是一条silly级别的日志')或app.log.silly({ foo: 'bar' }, '带元数据的silly日志')时,TypeScript会自动识别silly方法,不再抛出属性不存在的错误,同时提供完整的类型提示。
内容的提问来源于stack exchange,提问作者Farnsi
相关产品推荐
相关产品推荐

