在一个完整的 web 应用中,日志记录是必不可少的一部分。在 Node.js 中,有很多种方式记录日志,其中 egg-morgan 是一款基于 morgan 的 egg.js 插件,可以非常方便地记录请求日志,支持格式化输出,且应用非常广泛。本篇文章将带领大家了解 egg-morgan 的使用方法,并给出实际示例,希望可以帮助你更好地使用这款插件。
安装 egg-morgan
安装 egg-morgan 最简单的方法是通过 npm 安装:
$ npm install egg-morgan --save
配置 egg-morgan
在 egg.js 项目的 config 目录下新建 config.default.js 文件,并添加以下配置信息:
-- -------------------- ---- ------- -- ----------------- --- ------------- - - ------- ----------- -------- --- ------- ----- ----------- ----- -- ---
其中,format 是一个预定义的字符串,用于格式化输出日志,常见的有 "combined"、"common" 等。options 是一个对象,用来通过 morgan 提供的各种选项对日志进行格式化。buffer 和 bufferSize 则表示是否开启缓存,以及缓存大小。
如果需要更多自定义的配置,可以在 config 目录下新建 config.morgan.js 文件,并添加相应的配置即可。
插件的启用与禁用
在启用 egg-morgan 插件前,需要在项目配置文件中启用 egg.js 的日志插件:
// config/config.default.js ... config.logger = { consoleLevel: 'INFO', }; ...
其中 consoleLevel 是日志级别控制,控制台输出 INFO 及以上级别的日志。
若需要禁用 egg-morgan 插件,只需在框架启动配置处增加如下配置即可:
// config/config.default.js ... config.logrotator = { disable: true, }; ...
使用 egg-morgan
在配置完成后,就可以在项目中使用 egg-morgan 了。在 Controller、Service 或 Middleware 中可调用当前请求的 ctx.logger 记录日志。示例如下:
-- -------------------- ---- ------- -- ------------------ -------------- - --- -- - ----- -------------- ------- -------------- - ----- ------- - ----- - --- - - ----- ----------------- ---- -------- ---- ----------- ------ -------------------------- --- -------- - ------ ------- - - ------ --------------- --
下面是一些常见的日志级别和它们的作用:
- debug:调试信息输出
- info:一般信息输出
- warn:警告信息输出
- error:错误信息输出
可以根据实际需求和情况选择合适的日志级别,以及输出相应的信息。
egge-morgan 的使用示例
-- -------------------- ---- ------- -- ------------------------ -------------- - -- -- - ------ ----- -------- ----------- ----- - ----- ----- - ----------- ----- ------- ----- - ------- ---- --- ------- -------- - - ---- ----- ------------- - ----------------------------------- ----- ------------ - ---------- - ------ ----------------- ---- ---------- ------- ---- --- ------- ------------- -------------- --- -- --
// app/config/config.default.js exports.morgan = { format: 'combined', options: { skip: (req, res) => res.statusCode < 400, }, };
// app.js module.exports = app => { app.beforeStart(async () => { app.use(require('./app/middleware/logger')()); }); };
在以上示例中,我们定义了一个 logger 中间件,该中间件主要用于记录请求的基本信息,并输出到日志文件中。在中间件中,我们获取了请求的各种信息,并以 json 格式通过 ctx.logger.info() 输出。
在配置中,我们通过 format 和 options 属性对日志进行了格式化输出,其中 skip 选项用于跳过一些我们不希望输出的请求。
总结
到此为止,我们对 egg-morgan 进行了一番详细的了解。egg-morgan 所提供的日志记录功能非常强大,可以帮助我们记录请求的各种信息,以便于后期进行分析和优化。当然,我们不能忽略日志记录对性能的影响,因此需要慎重考虑在生产环境中记录日志的方式。希望本篇文章可以帮助你更好地使用 egg-morgan,为你的应用带来更好的开发体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055cbf81e8991b448da58b