在编写 Web 应用程序时,记录应用程序行为并对其进行分析非常重要。Node.js 中的 Morgan 是一个强大的日志记录中间件,它可以轻松地捕获 HTTP 请求和响应的详细信息。在本文中,我们将详细介绍 Morgan 的使用方法。
Morgan 简介
Morgan 是一个可定制的 HTTP 请求和响应日志记录器中间件,旨在帮助您捕获应用程序的行为。它是一个轻量级的模块,可以轻松地在任何 Node.js 应用程序中使用。
Morgan 可以根据用途的不同而生成不同的输出格式,例如,它可以输出简单地请求方法、URL、状态码、响应时间和响应大小等信息,也可以输出更详细的信息,例如请求体、响应头等信息。
安装 Morgan
在使用 Morgan 之前,我们需要先安装它。使用以下命令安装 Morgan:
npm install morgan
使用 Morgan
要在应用程序中使用 Morgan,我们需要将它作为中间件添加到 HTTP 请求处理管道中。您可以使用以下代码将 Morgan 添加到您的应用程序中:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------ - ------------------ ----- --- - ---------- ----------------------- ------------ ----- ---- -- - --------------- --------- --- ---------------- -- -- - ------------------- -- --------- -- ---- ------- ---
在上面的代码中,我们首先使用 require() 导入了 Express 和 Morgan 模块。然后,我们创建了一个 Express 应用程序实例,并使用 app.use() 将 Morgan 添加到处理管道中。 在这个例子中,我们将格式字符串 “dev” 用作参数传递给 Morgan,这意味着我们将使用默认设置来记录请求和响应信息。
Morgan 格式字符串
Morgan 支持格式字符串,这意味着您可以使用占位符来指定要记录的信息。这些占位符将在捕获请求/响应期间替换为实际的值。下面是一些常见的格式化选项:
:method
HTTP 请求方法(例如 GET、POST、PUT 等)。
:url
请求的 URL。
:status
响应的 HTTP 状态码。
:response-time
响应时间(以毫秒为单位)。
:remote-addr
远程客户端的 IP 地址。
:http-version
HTTP 版本(例如 1.0,1.1 等)。
:referrer
引荐(来源)URL。
:user-agent
客户端 User-Agent 字符串。
要使用这些格式化选项,请在格式字符串中使用相应的占位符。例如,要记录请求方法、URL、状态码和响应时间,可以使用以下格式字符串:
app.use(morgan(':method :url :status :response-time ms'));
Morgan 日志输出
Morgan 可以输出不同格式的日志。默认情况下,Morgan 输出日志到标准输出(控制台) 。您可以使用以下代码将日志输出到文件中:
const fs = require('fs'); const path = require('path'); const morgan = require('morgan'); const stream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' }); app.use(morgan('combined', { stream }));
在上面的例子中,我们使用 fs 和 path 模块来创建一个可写流,并将其传递给 Morgan configuration 选项中的 stream 属性,以便将日志写入文件中。
结论
Morgan 是一个十分强大的 HTTP 请求/响应日志记录器中间件,可以轻松地在应用程序中使用,并提供强大的定制性和配置选项。这个教程介绍了 Morgan 的基础知识,包括安装、使用和格式化选项,希望它能对您编写更好的日志记录的 Node.js 应用程序有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6709137dd91dce0dc87631db