Morgan.js 简介
Morgan 是一个记录 HTTP 请求和错误的中间件。中间件只是一个可以访问请求和响应生命周期方法的函数。我们可以使用预定义格式或创建新格式来格式化我们的日志。
摩根安装:
第 1 步:您可以访问 morgan 获取文档。可以使用此命令安装该软件包。
npm install morgan
步骤2:安装完成后,您可以使用以下命令检查软件包的安装版本:
npm ls morgan
第 3 步:要开始使用 morgan,请创建一个名为 index.js 的文件。可以使用此命令将包包含在 index.js 中。
const morgan = require('morgan')
第 4 步:要使用 morgan,我们必须调用一个实例并将其作为参数传递给 app.use(),它是 HTTP 请求之前的快速中间件。这可以按如下方式完成:
app.use(morgan(string));
上面的字符串定义了我们想要记录信息的格式。
项目结构:项目结构将如下图所示。
摩根有 我们可以直接使用五种预定义的格式来获取所需的信息。这些是:
- 组合:它给出了 Apache 标准组合格式的日志。
- common:它提供标准 Apache 通用日志输出。
- dev:这是一种颜色编码的日志格式。
- short:比默认格式短。它还包括响应时间。
- tiny:它是最短的日志,包含的信息很少。
所有这些预定义格式的输出格式都可以在这里找到。
示例 1:
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Using combined predefined format
app.use(morgan("combined"));
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Using dev predefined format
// Returns
app.use(morgan("dev"));
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/home", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Creating customised logs
// :method return method used like - GET,POST
// :url returns to which url request was made
// :status returns the status returned from req like - 200,404
// :response-time returns the time it took to give response
// Rest things are printed as it is
app.use(
morgan(
"Method- :method URL- :url Status- :status ResponseTime- :response-time ms"
)
);
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/home", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Creating custom token
// with name time
morgan.token(
"time",
" :method request for :url was received.Response time: :response-time"
);
// Using the name of
// token we created above
app.use(morgan("time"));
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/home", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
运行应用程序的步骤:在终端中运行以下命令来执行 index.js 文件。
node index.js
输出:
::1 - - [10/Feb/2021:22:18:30 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0
(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/88.0.4324.150 Safari/537.36"
当您访问 https://localhost:5000 时,上述日志将出现在控制台中。日志为我们提供了各种信息,例如发出请求的日期和时间、在这种情况下为GET的请求方法、向哪个 URL 发出请求(即 ' /'等等)。
示例 2:
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Using dev predefined format
// Returns
app.use(morgan("dev"));
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/home", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
输出:
当您访问“https://localhost:5000”时,输出将是:
GET / 404 4.031 ms - 139
由于我们没有“/” URL 的任何端点 我们最终使用GET类型的方法和响应时间(以毫秒为单位)得到 404 错误。
当您访问“https://localhost:5000/home”时,输出将是:
GET /home 200 3.416 ms - 13
在我们的程序中,我们创建了一个“/home”端点,因此我们得到了 200 的响应作为回报。
示例 3:
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Creating customised logs
// :method return method used like - GET,POST
// :url returns to which url request was made
// :status returns the status returned from req like - 200,404
// :response-time returns the time it took to give response
// Rest things are printed as it is
app.use(
morgan(
"Method- :method URL- :url Status- :status ResponseTime- :response-time ms"
)
);
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/home", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
输出:
Method- GET URL- /home Status- 200 ResponseTime- 3.392 ms
在上面的程序中,我们自定义了我们的输出日志。格式为:后跟信息名称。这些是预定义的标记,可以通过在它们前面使用:添加。
我们还可以借助 .token() 方法创建自定义令牌。请参见以下示例:
示例 4:
index.js
// Requiring modules
const express = require("express");
const morgan = require("morgan");
const app = express();
// Creating custom token
// with name time
morgan.token(
"time",
" :method request for :url was received.Response time: :response-time"
);
// Using the name of
// token we created above
app.use(morgan("time"));
// Creating an endpoint where
// requests can be made and
// we can get logs
app.get("/home", (req, res) => {
res.send("GeeksforGeeks");
});
// Running on PORT
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Running on PORT: ${PORT}`);
});
输出:
GET request for /home was received.Response time: 5.567
Morgan 是一个非常简单的记录器,它可以灵活地记录 HTTP 请求并为我们提供所需的信息。所以这就是我们如何在我们的应用程序中使用摩根