推荐答案
Fastify 提供了一个内置的日志记录机制,基于 Pino 日志库。Pino 是一个高性能的 JSON 日志记录器,专为 Node.js 设计。Fastify 默认使用 Pino 来记录日志,开发者可以通过配置自定义日志级别、格式和输出目标。
记录日志的方式
- 默认日志记录:Fastify 会自动记录请求和响应的日志,开发者无需额外配置。
- 自定义日志:通过
fastify.log
对象,开发者可以在代码中手动记录日志,支持不同的日志级别(如info
、error
、debug
等)。
示例代码
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- ------ --- ---------------- ----- --------- ------ -- - ---------------------- -- -- ---- ------ -- ------ ------ - ------ ------- -- --- -------------------- ----- -- - -- ----- - ----------------------- ---------------- - ---
本题详细解读
Fastify 日志机制的核心特点
- 基于 Pino:Fastify 的日志机制依赖于 Pino,Pino 是一个高性能的日志库,支持 JSON 格式的日志输出,适合在分布式系统中使用。
- 高性能:Pino 的设计目标是尽量减少日志记录对应用程序性能的影响,适合高并发场景。
- 可配置性:开发者可以通过 Fastify 的配置选项自定义日志级别、格式和输出目标。
日志级别
Fastify 支持多种日志级别,包括:
fatal
:严重的错误,可能导致应用程序崩溃。error
:错误信息,但不影响应用程序继续运行。warn
:警告信息,表示潜在的问题。info
:常规信息,用于记录应用程序的运行状态。debug
:调试信息,用于开发阶段。trace
:详细的调试信息,通常用于排查复杂问题。
日志配置
在创建 Fastify 实例时,可以通过 logger
选项配置日志行为:
- 启用日志:
logger: true
启用默认日志记录。 - 自定义日志配置:
logger: { level: 'info', prettyPrint: true }
可以设置日志级别和格式化选项。
日志输出
Fastify 的日志默认输出到标准输出(stdout),但可以通过 Pino 的配置将日志重定向到文件或其他目标。
示例:自定义日志配置
const fastify = require('fastify')({ logger: { level: 'info', prettyPrint: true, // 格式化输出 file: '/path/to/logfile.log' // 将日志输出到文件 } });
通过以上配置,开发者可以灵活地控制 Fastify 的日志行为,满足不同场景的需求。