推荐答案
在 Fastify 中使用 pino 进行日志记录非常简单,因为 Fastify 默认集成了 pino 作为其日志记录器。以下是如何在 Fastify 中使用 pino 进行日志记录的示例:
// www.javascriptcn.com code example
const fastify = require('fastify')({
logger: true // 启用 pino 日志记录器
});
fastify.get('/', async (request, reply) => {
request.log.info('This is an info log'); // 记录一条 info 级别的日志
return { hello: 'world' };
});
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err); // 记录一条 error 级别的日志
process.exit(1);
}
fastify.log.info('Server listening on http://localhost:3000'); // 记录一条 info 级别的日志
});本题详细解读
1. Fastify 默认集成 pino
Fastify 默认使用 pino 作为其日志记录器。你只需要在创建 Fastify 实例时,将 logger 选项设置为 true,即可启用 pino 日志记录器。
const fastify = require('fastify')({
logger: true
});2. 日志级别
pino 支持多种日志级别,包括 trace、debug、info、warn、error 和 fatal。你可以根据需要在不同的场景下使用不同的日志级别。
// www.javascriptcn.com code example
fastify.get('/', async (request, reply) => {
request.log.trace('This is a trace log');
request.log.debug('This is a debug log');
request.log.info('This is an info log');
request.log.warn('This is a warn log');
request.log.error('This is an error log');
request.log.fatal('This is a fatal log');
return { hello: 'world' };
});3. 自定义 pino 配置
如果你需要自定义 pino 的配置,可以通过传递一个配置对象来覆盖默认配置。
const fastify = require('fastify')({
logger: {
level: 'info',
prettyPrint: true // 启用 pretty print 格式化输出
}
});4. 访问日志记录器
在 Fastify 中,你可以通过 fastify.log 或 request.log 来访问日志记录器。fastify.log 用于记录应用级别的日志,而 request.log 用于记录与特定请求相关的日志。
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err); // 应用级别的错误日志
process.exit(1);
}
fastify.log.info('Server listening on http://localhost:3000'); // 应用级别的信息日志
});5. 日志格式
pino 默认输出 JSON 格式的日志,这使得日志易于解析和处理。如果你需要更友好的输出格式,可以使用 pino-pretty 插件。
npm install pino-pretty
然后在配置中启用 prettyPrint:
const fastify = require('fastify')({
logger: {
prettyPrint: true
}
});通过以上步骤,你可以在 Fastify 中轻松使用 pino 进行日志记录,并根据需要自定义日志级别和格式。