在 Hapi 中使用 Pino 进行日志记录

简介

对于 web 应用来说,灵活的日志记录是一个必不可少的特性。Hapi 是一个优秀的 Node.js web 应用框架,同时 Pino 是一个高性能的 JSON 格式日志库。结合 Hapi 和 Pino 可以轻易地实现高效可靠的日志记录。

本文将会介绍如何在 Hapi 应用中使用 Pino 进行日志记录。

安装

首先需要安装 Hapi 和 Pino。可以使用 npm 安装:

npm install @hapi/hapi pino

集成

在 Hapi 应用中使用 Pino 进行日志记录很简单。只需要在 Hapi 实例化时传入 Pino 的实例即可。

const Hapi = require('@hapi/hapi')
const pino = require('pino')

const logger = pino({
  prettyPrint: true
})

const init = async () => {
  const server = Hapi.server({
    port: 3000,
    host: 'localhost',
    debug: {
      request: ['error']
    },
    // 将 logger 实例传入 options 中
    logger: logger
  });

  await server.start();
  console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {

  console.log(err);
  process.exit(1);
});

init();

这样,在应用的任何地方,都可以通过 server.logger 方法使用 Pino 实例进行日志记录。

const handler = (request, h) => {
  request.server.logger.info('Hello, world!');
  return 'Success';
};

配置

Pino 有许多配置选项,可以自定义日志格式和记录级别,以适应应用的需求。在初始化 Pino 实例时传入配置选项即可。

const logger = pino({
  level: 'info',
  prettyPrint: true,
  redact: {
    paths: ['password', '*.password', 'access_token'],
    censor: 'REDACTED'
  }
})

上面的代码定义了日志记录的级别为 info,启用了可读性更好的输出格式,以及对敏感信息(如密码、access_token)进行了处理,输出 REDACTED

更多配置选项请参考 Pino 的文档。

总结

在 Hapi 应用中使用 Pino 进行日志记录非常简单,只需要实例化 Pino 并将其作为 Hapi 的 logger 实例。同时,Pino 的配置选项也非常丰富,可以灵活地适应应用的需求。

日志记录虽然看似简单,但实质上非常重要。好的日志记录可以让你在应用出现问题时,快速定位问题,予以解决。因此,我们应该充分发挥 Pino 的优势,充分利用日志记录,提高应用的健壮性和稳定性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65bacdc0add4f0e0ff35ba94