Hapi 实战:如何使用 Good 插件实现日志记录

阅读时长 8 分钟读完

Hapi 实战:如何使用 Good 插件实现日志记录

在Web开发领域中,Hapi 是一个非常流行的Node.js框架,它为开发者提供了完整的工具包和插件体系,让开发者能够迅速地构建出高效、可扩展的Web应用程序。但是,对于一个大型、复杂的Web应用来说,如何进行日志记录是一个非常重要的问题。在这方面,Good 是一个非常棒的插件,它能够帮助我们轻松地实现日志记录。

Good 是一个 Hapi 的插件,它可以将服务运行期间的事件信息以一定格式的日志输出到各个目的地,例如文件、数据库、控制台等。在这篇文章中,我们将详细介绍如何使用 Good 插件实现日志记录,包括插件的基本使用、自定义输出、日志筛选等。

安装 Good 插件

首先,我们需要在 Hapi 项目中安装 Good 插件,你可以使用 npm 进行安装:

Good 插件提供了多种 reporters(报告器),例如文件、控制台、UDP 等,我们在这里将介绍如何使用文件和控制台两种 reportes 输出日志信息。

Good 插件的基本使用

Good 插件非常易于使用,只需要在 Hapi 服务启动时将 Good 插件注册到服务中,即可开始记录基本的日志信息,例如服务启动时间、请求响应时间、请求响应状态等。下面是演示代码:

-- -------------------- ---- -------
----- ---- - ---------------
----- ---- - ---------------

----- ------ - --- -------------
------------------- ----- ---- --

--------------
  ------- ------
  ----- ----
  -------- --------- ------ -- -
    ------------ -------
  -
--

----- ------- - -
  ---------- -
    ---------------- --
      ------- --------------
    -- ----------
    ------------- --
      ------- ---------------
      ----- ----------
      ----- --
        ------ ----
        ---- ----
        --------- ----
        -------- ---
      --
    -- -
      ------- ---------------
      ----- ----------
    -- -
      ------- ------------
      ----- ------------------
    --
  -
-

-----------------
  --------- -----
  -------- -------
-- ----- -- -

  -- ----- -
    ------------------
    ---------------
  -
  ------------------ -- -

    -- ----- -
      ----- ---
    -
    ------------------- ------- ----- ----------------
  --
--

在这个例子中,我们先创建了一个 Hapi 服务,并向其中添加了一个简单的路由。接着,我们使用 Good 插件在服务中注册了两个 reporters,它们分别是 consoleReporter 和 fileReporter。其中 consoleReporter 会将日志记录输出到控制台,fileReporter 则会输出到一个文件中。上面的例子中,我们定义了文件日志的输出目录为 log/logs.log。

运行上面的代码,你会看到服务启动后在控制台和日志文件中都记录了服务启动时间和请求响应时间等日志信息。

自定义输出

除了 Good 插件默认的输出信息以外,我们还可以通过自定义 transform 函数,来过滤或者加工输出信息。下面是一个示例代码:

-- -------------------- ---- -------
----- ------- - -
  ---------- -
    ------------- --
      ------- ---------------
      ----- ----------
      ----- --
        ------ ----
        ---- ----
        --------- ----
        -------- ---
      --
    -- -
      ------- ---------------
      ----- ----------
    -- -
      ------- ------------
      ----- ------------------
    --
  -
-

----- --------------- - ------ -- -
  ----- ------ - -
    ------- ------------------
    ----- ----------------
    ----------- ---------------
  -
  ------ ------
-

----- ---------- - --------------------------------------------

-----------------
  --------- -----
  -------- -------
-- ----- -- -

  -- ----- -
    ------------------
    ---------------
  -

  --------------------- --------- -- -
    ---------------------------- -------------
  --

  --------------------- --------- -- -
    ----------------------------- -----------------
  --
--

-------------------- --------- ------ -- -
  ----------------------- -------------------------
--

在这个示例中,我们定义了一个自定义的 transform 函数 customTransform,它通过过滤原始日志信息,仅保留了请求的 method、path 和 statusCode 字段。在服务启动后,我们使用 server.on 订阅了 request 和 response 事件,分别用 server.log 输出了请求信息和响应信息。此外,我们还通过 server.on、server.log 等方法,进行了较为细致的日志记录。

日志筛选

一般情况下,我们的 Web 应用程序将产生大量的日志信息,有时我们需要只关注特定的日志,如错误信息或警告信息,以便我们更好地定位和解决问题。好在 Good 插件提供了筛选功能,让我们可以针对不同的日志类型设置不同的输出方式。

下面是示例代码:

-- -------------------- ---- -------
----- ------- - -
  ---------- -
    ---------------- --
      ------- --------------
    -- ----------
    ------------- --
      ------- ---------------
      ----- ----------
      ----- --
        ------ ----
        ---- ----
        --------- ----
        -------- ---
      --
    -- -
      ------- ---------------
      ----- ----------
    -- -
      ------- ------------
      ----- ------------------
    --
  -
-

----- ---------- - --------------------------------------------

-----------------
  --------- -----
  -------- -------
-- ----- -- -

  -- ----- -
    ------------------
    ---------------
  -

  --------------------- --------- -- -
    -- ---------------------------- --- ---- -
      ------------------- --------- ----------------------------
    -
  --
--

在这个示例中,我们通过设置 args 参数,指定了 Good 插件只输出 error(错误信息)和 info(一般信息)两种类型的日志。在服务启动后,我们通过 server.on 订阅了 response 事件,并针对响应状态码不等于200的请求,将相关日志信息输出到日志文件中。

总结:

Good 插件是一个非常好用的工具,它可以轻松地实现日志记录,帮助我们更好地理解 Web 应用程序的运行情况。在本文中,我们介绍了 Good 插件的基本使用、自定义输出、日志筛选等功能,希望你能借此加深对 Hapi 的了解,并能够更灵活地应用 Good 插件在项目中。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d363f1b5eee0b525aff460

纠错
反馈