如何在快车项目中使用摩根

介绍

morgan是一个 Node.js 和 Express 中间件来记录 HTTP 请求和错误,并简化流程. 在 Node.js 和 Express 中,中间件是一个功能,可以访问请求响应生命周期方法,以及下一步()方法来继续在您的 Express 服务器中的逻辑。

在本文中,您将探索如何在您的Express项目中实施morgan。

前提条件

要跟随这篇文章,你将需要:

要了解更多关于 Node.js 的信息,请参阅我们的 如何在 Node.js 中编码系列 *本地安装的 Node.js,您可以按照 如何安装 Node.js 和创建本地开发环境进行操作。

步骤1 - 设置项目

由于 Express.js 是一个 Node.js 框架,请确保您有最新版本的 Node.js 从 Node.js之前前进。

要将morgan纳入您的Express项目,您需要将其安装为依赖。

为您的项目创建一个名为express-morgan的新目录:

1mkdir express-morgan

更改到新目录:

1cd express-morgan

初始化一个新的 Node 项目与默认值. 这将包括你的 package.json 文件访问你的依赖:

1npm init -y

安装摩根作为依赖:

1npm install morgan --save

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

1touch index.js

现在你已将morgan添加到你的项目中,让我们把它添加到你的Express服务器中。

1[label index.js]
2const express = require('express');
3const morgan = require('morgan');
4
5const app = express();
6
7app.listen(3000, () => {
8    console.debug('App listening on :3000');
9});

随着您的快递服务器现在设置,让我们看看使用morgan来添加请求日志。

步骤 2 – 使用 Morgan in Express

要在您的 Express 服务器中使用 morgan,您可以召唤一个实例并在您的 HTTP 请求之前在 .use() 中介软件中作为参数传输。 morgan 配备了一套预设或预定义格式字符串,以创建一个新的 logger 中介软件,具有内置格式和选项。

在您的 index.js 文件中,请召唤 app.use() 表达中间程序并将 morgan() 作为一个参数:

1[label index.js]
2const app = express();
3
4app.use(morgan('tiny'));

tiny预设为morgan()的参数将使用其内置方法,识别 URL,声明状态,并用毫秒表示请求的响应时间。

或者,morgan在下面的格式字符串中读取像tiny这样的预设:

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

这倾向于包含在tiny预设中的相同功能,在一个格式中 morgan 解析. 随后的 : 符号是称为代币的 morgan 函数. 你可以使用格式字符串来定义代币创建自己的自定义 morgan 中间软件。

步骤3 – 创建自己的代币

morgan中的代币是按照符号 : 识别的函数。 morgan 允许您使用 .token() 方法创建自己的代币。

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

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

1[label index.js]
2morgan.token('host', function(req, res) {
3    return req.hostname;
4});

匿名回调函数将返回req对象上的主机名作为新的代币,用于您的Express服务器中的HTTP请求。

步骤 4 – 使用自定义论点设计代币

要表示自定义参数,您可以使用方块来定义传给代币的参数。这将允许您的代币接受额外的参数。在您的 index.js 文件中,将自定义参数应用到 `:param' 代币中的 morgan 格式字符串:

1[label index.js]
2app.use(morgan(':method :host :status :param[id] :res[content-length] - :response-time ms'));
3
4morgan.token('param', function(req, res, param) {
5    return req.params[param];
6});

在 morgan 召唤中的 :param' 代币上的自定义参数 id' 将包含在 `.token() 方法之后的参数中的 ID。

结论

morgan 可在记录 HTTP 请求时提供灵活性,并在自定义格式字符串或预设中更新准确的状态和响应时间。

Published At
Categories with 技术
Tagged with
comments powered by Disqus