前言
在前端开发过程中,我们经常需要记录用户访问和操作的日志,以及收集应用运行时的错误信息和异常情况。这些日志和错误信息可以帮助我们了解用户需求和应用运行情况,辅助我们进行故障排查和业务优化。
在 Node.js 开发中,常用的框架之一是 Hapi.js,它提供了很好的路由管理和插件扩展机制,方便我们开发出高性能、高可靠性的 Web 应用。在 Hapi.js 中,我们可以使用 Good 插件来实现日志的记录和错误信息的收集。
本文将围绕 Hapi.js 和 Good 插件,介绍如何快速上手实现访问日志与错误日志收集,并提供代码示例。
Good 插件介绍
Good 是 Hapi.js 的一个插件,它提供了一套完整的日志记录和监控支持,可以用于记录请求和响应的信息、应用运行状态和错误信息等。Good 插件支持多种记录和监控方式,包括文件、控制台、ELasticsearch 等,数据格式支持多种标准格式,如 logstash 格式、JSON 格式等。
使用 Good 插件记录访问日志
在 Hapi.js 中,通过 Good 插件可以轻松地记录 Web 应用程序的请求和响应的信息,包括请求方式、请求路径、请求时间、响应状态码、响应时间等。在实际使用中,我们可以通过配置 Good 插件的参数,选择需要使用的记录方式和数据格式。
下面是一个示例代码片段,介绍如何在 Hapi.js 中使用 Good 插件来记录访问日志:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ---- - ---------------------- ----- ------ - ------------- ----- ----- --- ----- ---- - ----- -- -- - ----- ----------------- ------- ----- -------- - ---------- - ---------------- - - ------- --------------------- ----- ---------- ----- -- ---- ---- --------- ---- -------- --- -- -- - ------- -------------------- -- -------- - - - --- -------------- ------- ------ --------- -------- --------- -- -- - ------ ------- ------- - --- ----- --------------- ------------------- ------- -- ---- ----------------- -- -------
在上述代码中,我们通过 Good 插件设置了控制台(consoleReporter)日志记录方式,使用 squeeze 插件过滤请求日志、响应日志和错误日志等,最后在控制台打印日志信息。运行上述代码,即可在控制台看到类似如下的日志信息:
{"request":{"method":"get","url":"/","headers":{"user-agent":"curl/7.64.1","host":"localhost:3000","accept":"*/*"},"remoteAddress":"::1","remotePort":63208},"response":{"statusCode":200,"headers":{"content-type":"text/html; charset=utf-8"},"source":"Hello, Good!"},"log":{"tags":["response"],"data":"response: 200","timestamp":"2021-08-09T05:06:27.862Z"}}
上述示例代码演示了如何记录访问日志,我们还可以扩展日志的内容和格式,以便更好地分析和处理收集到的日志信息。
使用 Good 插件收集错误信息
在实际应用中,我们需要捕获和记录应用程序出现的错误和异常情况,以便快速地定位问题并进行修复。在 Hapi.js 中,我们同样可以使用 Good 插件收集错误信息,包括错误的类型、错误的栈信息、错误的原因等。
下面是一个示例代码片段,介绍如何在 Hapi.js 中使用 Good 插件来收集错误信息:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ---- - ---------------------- ----- ------ - ------------- ----- ----- --- ----- ---- - ----- -- -- - ----- ----------------- ------- ----- -------- - ---------- - ---------------- - - ------- --------------------- ----- ---------- ----- -- ---- ---- -------- ---- ------ --- -- -- - ------- -------------------- -- -------- - - - --- -------------- ------- ------ -------------- -------- --------- -- -- - ----- --- ------------ --------- ---- -------- - --- ----- --------------- ------------------- ------- -- ---- ----------------- -- -------
在上述代码中,我们定义了一个简单的路由,触发一个错误,从而收集错误信息。我们同样使用 Good 插件的控制台(consoleReporter)日志记录方式,同时启用了 squeeze 过滤插件,收集各种类型的日志信息。运行上述代码,即可在控制台看到错误的详细信息,类似如下日志信息:
{"request":{"method":"get","url":"/error","headers":{"user-agent":"curl/7.64.1","host":"localhost:3000","accept":"*/*"},"remoteAddress":"::1","remotePort":63480},"error":{"name":"Error","message":"Oops! something went wrong","stack":"Error: Oops! something went wrong\n at module.exports.handler (/home/username/app.js:25:19)\n at Object.internals.handler (/home/username/node_modules/@hapi/hapi/lib/handler.js:46:20)\n at exports.execute (/home/username/node_modules/@hapi/hapi/lib/handler.js:31:36)\n at processTicksAndRejections (internal/process/task_queues.js:97:5)"},"log":{"tags":["error"],"data":"Oops! something went wrong","timestamp":"2021-08-09T05:23:52.891Z"}}
上述示例代码演示了如何收集错误日志信息,我们可以根据实际需求,选择不同的记录方式和数据格式,并按照自己的需求进行数据处理和分析。
总结
通过本文的介绍和示例代码,我们可以看到 Good 插件非常方便和实用,在 Hapi.js 开发中使用 Good 插件可以快速实现访问日志和错误日志的记录和收集,为我们的应用程序提供监控和故障排查的支持。
Good 插件不仅仅支持 Hapi.js 框架,还可以用于其他 Node.js Web 应用程序的日志记录,如果您对 Node.js 开发感兴趣,可以了解和使用 Good 插件,为您的应用程序提供更好的支持和帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6462db78968c7c53b03e99bb