pino-rest 是一个基于 pino 开发的 Node.js 日志库,可以帮助开发者在 RESTful API 服务器端应用中方便地打印和分析日志。本文将介绍 pino-rest 的使用方法和具体实例。
安装
pino-rest 是一个 Node.js 模块,可以通过 npm 包管理器进行安装:
npm i pino-rest
基本使用
pino-rest 需要与 express 或其他类似的 web 框架一起使用。安装 express 后,可以通过以下方式启用 pino-rest:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ----- ---- - --------------- ----- ----------- - ------------------------------ ----- ------ - ------ ------ --------------------- -- ------ -- --------------------- ------ ---
在应用中使用 logger
对象记录日志:
app.get('/', (req, res) => { logger.info('Getting index page') res.send('Hello World!') })
这将记录应用启动和请求的信息。
配置
pino-rest 内置支持多种配置。在 express-pino-logger 中传递配置:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ----- ---- - --------------- ----- ----------- - ------------------------------ ----- ------ - ------ ------ --------------------- -- ------- ------------ ---- -- --------------------- ------ ---
这里实现了一个控制台美化输出。
结合 express-bunyan-logger
express-bunyan-logger 是另一个流行的 Node.js 日志库,本例中我们如何将 pino-rest 与 express-bunyan-logger 一起使用。
在主文件中配置 bunyan:
const bunyan = require('bunyan') const logger = bunyan.createLogger({ name: 'example-app' }) const ExpressBrute = require('express-brute') const MemcachedStore = require('express-brute-memcached') const BruteForceSchema = require('./brute-force-schema.json')
然后,安装 express-bunyan-logger
以及 pino
和 pino-pretty
:
npm i express-bunyan-logger pino pino-pretty
在主文件中配置 express-bunyan-logger:
-- -------------------- ---- ------- ----- ------------- - - ----- -------------- ------------ ---------------------- -------- -- ------ -------- ------- ------------------------------------ -- - --------------------------------------------
然后再添加 pino-rest,logger 实例传递给 expressPino:
const expressPino = require('express-pino-logger') app.use(expressPino({ logger }))
然后启动应用即可。
控制台参数
pino-rest 支持单独设置控制台日志输出,使用 express-pino-logger
的 prettyPrint
来显示控制台日志。
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ----- ---- - --------------- ----- ----------- - ------------------------------ ----- ------ - ------ ------------ ---- -- --------------------- ------ ---
过滤器
pino-rest 支持使用过滤器对日志进行过滤。过滤器允许您在记录日志时添加额外信息。
使用如下方式在中间件中创建一个新的子日志记录器:
const childLogger = logger.child({ requestId: uuid.v4() })
你可以在你的请求处理程序中使用这个子日志记录器来添加基于请求的记录,例如:
childLogger.info('Getting index page')
您还可以使用 Express 过滤器来控制什么类型的请求将记录到日志中。
-- -------------------- ---- ------- ----- ------------ - ------------------------------------- ----- ----------- - ------------------ -- - -- ----------------------------------------- - ------ ------ -- ------ ---- --- --------- --- ----- - ------ ----- -- --- ---------- ---- -- --------------------- ------ ------- ------- ------------ ------ ---
这将忽略 /api/logs 请求,并记录所有其他请求。
总结
pino-rest 可以方便地在 Node.js RESTful 应用程序中记录和分析日志,不需要编写复杂的代码,只需简单地设置即可。希望本文可以帮助您了解使用 pino-rest 进行日志记录的基本知识。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601381e8991b448de181