Express.js 如何记录日志

在 Web 应用程序开发中,记录日志是非常重要的。它可以帮助我们了解应用程序的运行情况,诊断问题并调试代码。在 Express.js 中,可以使用 MorganWinston 两个流行的库来记录日志。

使用 Morgan(HTTP 请求日志)

Morgan 是一个 HTTP 请求日志中间件,可以记录 HTTP 请求的详细信息,例如请求方式、URL、状态码、响应时间等。使用它非常简单,只需要安装和配置即可。

安装

使用 npm 通过以下命令安装 Morgan:

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

使用

在应用程序中使用 Morgan,只需要调用 morgan 函数并将其作为 Express 中间件使用即可。以下是一个使用 Morgan 记录 HTTP 请求日志的示例:

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

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

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

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

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

上面的示例中,我们在 app.use 中使用了 morgan('combined') 作为 Express 中间件。这里的 combined 是一个预定义的格式,它会记录所有 HTTP 请求的详细信息,并以 Apache Combined Log Format 的形式输出。

Morgan 支持许多预定义的格式,并允许您自定义输出格式。您可以在 Morgan 文档 中找到更多信息。

使用 Winston(应用程序日志)

Winston 是一个非常流行的 Node.js 日志库,它支持多种日志传输和存储,包括文件、控制台、数据库等。在 Express.js 中,我们可以使用 Winston 来记录应用程序日志。

安装

请使用以下命令通过 npm 安装 Winston:

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

使用

以下是一个使用 Winston 记录应用程序日志的示例:

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

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

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

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

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

上面的示例中,我们首先使用 winston.createLogger 函数创建了一个新的 Winston 日志记录器。通过 transports 属性,我们可以指定日志输出目标,例如文件或控制台。在这个示例中,我们将错误日志写入 error.log 文件,将所有日志都写入 combined.log 中。

在路由中,我们使用 logger.log 函数记录了一个日志。Winston 提供了多个级别的日志记录函数,包括 errorwarninfoverbosedebugsilly。在这里,我们使用了 info 级别的日志记录函数,并将消息传递给它。

最后,在错误处理中间件中,我们使用 logger.error 函数记录了一个错误日志。

结论

在本文中,我们介绍了使用 Morgan 和 Winston 两个流行的 Node.js 日志库来记录 Express.js 应用程序的 HTTP 请求日志和应用程序日志。无论您是记录应用程序健康状况、调试代码还是满足法规要求,您都可以通过这些工具来满足你的需求。但是,请注意在应用程序开发时,不要记录敏感信息,遵守法规和隐私政策。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6710eafbad1e889fe2fcc4e8