如何在 Express 项目中使用摩根

介绍

morgan是一个 Node.js 和 Express 中间件,用于记录 HTTP 请求和错误,并简化流程。在Node.js和受快递,中间件是可以访问的功能requestresponse生命周期方法,并next()继续在您的Express服务器的逻辑方法。

在本文中,您将探索如何在 Express 项目中实现摩根。

先决条件

要阅读本文,您需要:

步骤 1 – 设置项目

由于 Express.js 是一个 Node.js 框架,因此在继续之前,请确保您拥有来自Node.js的最新版本的 Node.js。

要将摩根包含在您的 Express 项目中,您需要将其安装为依赖项。

创建一个以express-morgan您的项目命名的新目录

  • mkdir express-morgan

切换到新目录:

  • cd express-morgan

使用默认值初始化一个新的 Node 项目。这将包含package.json用于访问依赖项的文件:

  • npm init -y

安装 morgan 作为依赖:

  • npm install morgan --save

创建您的入口文件,index.js. 这是您将在 Express 服务器中处理逻辑的地方:

  • touch index.js

现在您已将 morgan 添加到您的项目中,让我们将其包含在您的 Express 服务器中。在您的index.js文件中,实例化一个 Express 实例并要求morgan

索引.js
const express = require('express');
const morgan = require('morgan');

const app = express();

app.listen(3000, () => {
    console.debug('App listening on :3000');
});

现在您的 Express 服务器已设置完毕,让我们看看如何使用 morgan 添加请求日志记录。

第 2 步 – 在 Express 中使用摩根

要在您的 Express 服务器中使用摩根,您可以调用一个实例并.use()在您的 HTTP 请求之前中间件中作为参数传递morgan 带有一套预设或预定义的格式字符串,用于创建具有内置格式和选项的新记录器中间件。该预设tiny在记录 HTTP 请求时提供最少的输出。

在您的index.js文件中,调用app.use()Express 中间件并morgan()作为参数传递

索引.js
const app = express();

app.use(morgan('tiny'));

将预设tiny作为参数包含morgan()将使用其内置方法、识别 URL、声明状态和请求的响应时间(以毫秒为单位)。

或者,摩根读取预设,如tiny以下定义的格式字符串:

morgan(':method :url :status :res[content-length] - :response-time ms');

这倾向于以tiny摩根解析的格式包含在预设中的相同功能:符号是摩根函数调用令牌。您可以使用格式字符串定义令牌来创建您自己的自定义摩根中间件。

第 3 步 – 创建您自己的代币

摩根中的代币是在:符号之后标识的功能morgan 允许您使用该.token()方法创建自己的令牌

.token()方法接受一个类型或令牌的名称作为第一个参数,跟随一个回调函数。每次发生日志时,morgan 都会使用令牌运行回调函数。作为中间件,morgan 将reqres对象用作参数。

在您的index.js文件中,使用该.token()方法,并传递一个类型作为匿名函数后的第一个参数:

索引.js
morgan.token('host', function(req, res) {
    return req.hostname;
});

匿名回调函数会将对象hostname上的返回req为新令牌,以在 Express 服务器中的 HTTP 请求中使用。

第 4 步 – 使用自定义参数设计令牌

要表示自定义参数,您可以使用方括号来定义传递给令牌的参数。这将允许您的令牌接受额外的参数。在您的index.js文件中,将自定义参数应用于:param令牌中的摩根格式字符串

索引.js
app.use(morgan(':method :host :status :param[id] :res[content-length] - :response-time ms'));

morgan.token('param', function(req, res, param) {
    return req.params[param];
});

定制参数id:param在摩根调用令牌将包括以下中相应的参数的ID.token()方法。

结论

摩根在记录 HTTP 请求时提供了灵活性,并以自定义格式字符串或预设更新精确状态和响应时间。如需进一步阅读,请查看摩根文档。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁