推荐答案
Fastify 提供了一个内置的日志记录机制,基于 Pino 日志库。Pino 是一个高性能的 JSON 日志记录器,专为 Node.js 设计。Fastify 默认使用 Pino 来记录日志,开发者可以通过配置自定义日志级别、格式和输出目标。
记录日志的方式
- 默认日志记录:Fastify 会自动记录请求和响应的日志,开发者无需额外配置。
- 自定义日志:通过
fastify.log对象,开发者可以在代码中手动记录日志,支持不同的日志级别(如info、error、debug等)。
示例代码
// www.javascriptcn.com code example
const fastify = require('fastify')({
logger: true // 启用日志记录
});
fastify.get('/', async (request, reply) => {
fastify.log.info('This is an info log'); // 手动记录日志
return { hello: 'world' };
});
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
});本题详细解读
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 的日志行为,满足不同场景的需求。