You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:59:18