Fastify 是 Node.js 微服务框架之一,它被广泛认为是 Node.js 生态系统中速度最快的框架之一。Fastify 提供了丰富的插件和中间件以及具有低开销的各种功能,使得开发者可以快速搭建高性能的应用程序。
在任何应用程序中,错误处理是一个必要的步骤。本文将介绍如何在 Fastify 应用程序中收集和监控错误,并为那些想要加强其错误处理能力的开发者提供指导。
错误收集
Fastify 内置了一支能够很好地收集和记录错误的插件 fastify-error。fastify-error 提供了两个有用的功能,一是能够收集错误并将其存储在 JSON 日志文件中,二是能够将错误信息发送到错误跟踪服务,如 Sentry、New Relic 和 Loggly 等。
以下示例代码展示了如何在 Fastify 应用程序中使用 fastify-error 插件:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - ------------------------- ----- --- - ---------- ------------------------- - ------- - ---- ----------------------------- -- -------- ------ --- -- ---------- - ---------------------- - ------- -------- ------- --------- -------- ------- ----- -- -- --- ------------ ----- --------- ------ -- - ----- --- ----------- -- -- ----- ------ ---- --- ---- --- -----------------展开代码
在代码示例中,我们在 Fastify 应用程序中引入了 fastify-error 插件,并将其注册到应用程序中。我们通过配置对象为 fastify-error 插件传递了两个选项:
sentry
:该选项用于将错误信息发送到 Sentry 错误跟踪服务中。这里我们需要将dsn
替换为自己在 Sentry 中获得的 DSN。reporters
:该选项用于将错误记录在不同媒介上。上述示例中我们将快速记录器发送错误信息以消除重复的消息,报告错误级别error
和warn
。
最后,我们在 Fastify 应用程序中创建了一个简单的路由 /
,并造成了一个错误 (“This is an error raised from GET /”)。Fastify 将会自动记录这个错误并将其输出至终端。
错误监控
除了在日志文件中记录错误之外,我们还可以使用错误监控服务对其进行进一步的监控和管理。这其中最流行的错误监控服务是 Sentry。Sentry 提供了许多有用的功能以监控和管理应用程序中的错误,并及时解决它们。无论是 Web 应用,移动应用还是服务端应用,Sentry 都能提供所需的功能。
以下是如何在 Fastify 应用程序中集成 Sentry:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------ - ------------------------ ----- - --- ------ - - ---------------- ----- ----------- - ------------------------- ----- --- - ---------- -- --------------------- --- ------------- - ------------- ---- ----------------------------- -- -------- ------ --- ------------ --------------------- ------------- -------------- -- --------------------------------- -- ---------------- --- ------------ --------------- - ----------------- ---- -- --- - ------------------------ ----- --------- ------ -- - ----- ------- - --------- ------------------ ------- -- ------ ---------- -- --------------------- --- ------------- - ----- ----------- - ----------------------------------------- ----------------------------- -- - ------------------------ --------- --------------- ----------- ---------- --- ----------------------------- --- - --- ---------------------- ----- --------- ------ ------ -- - -- --------------------- --- ------------- - ------------------------------- - --- ------------------------- - ------- - ---- ----------------------------- -- -------- ------ --- -- ---------- - ---------------------- - ------- -------- ------- --------- -------- -- -- --- ------------ ----- --------- ------ -- - ----- --- ----------- -- -- ----- ------ ---- --- ---- --- -----------------展开代码
在代码示例中,我们添加了对请求的监听函数,并用于添加 UUID 标识符(traceId
)和 Sentry 属性。请求结束时,我们将 UUID 和该请求的元数据添加到 Sentry 配置范围中。当 Fastify 应用程序中发生错误时,onError钩子函数会自动调用 Sentry.captureException()
方法,该方法通过 Sentry 将错误信息发送到错误跟踪服务中。
此外,在 fastify-error 插件中,我们配置了 sentry
和 reporters
参数以兼顾错误日志的记录和管理。
总结
错误处理对于任何应用程序都是必不可少的,特别是对于那些在高负载环境下运行的应用程序。本文介绍了如何在 Fastify 应用程序中使用 fastify-error 插件和 Sentry 错误跟踪服务来收集和监控错误。
以上两种方案都非常简单,可以帮助你快速地提高你的应用程序的错误处理能力。我们希望这篇文章能为你提供一些有用的指导,帮助你提高你的错误处理实践。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649aaa4a48841e989479c2e7