📜  Node.js 中的摩根是什么?(1)

📅  最后修改于: 2023-12-03 14:44:42.103000             🧑  作者: Mango

Node.js 中的摩根是什么?

在 Node.js 中,摩根(morgan)是一个流行的 HTTP 请求日志中间件,它可以帮助我们记录服务器收到的每个请求,包括请求方法、请求 URL、响应状态码、请求时间等信息,方便我们在调试和排错时使用。

安装

我们可以使用 npm 包管理器在 Node.js 中安装摩根:

npm install morgan --save
使用

在应用程序中加入摩根很简单,只需要将其作为中间件应用即可:

const express = require('express');
const morgan = require('morgan');

const app = express();

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

// 其他路由和中间件

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

在这个例子中,我们使用 "combined" 格式来配置摩根,这将记录常规的 Apache combined 日志格式,包括远程 IP 地址、用户 ID、请求时间和请求消息体。

除了 "combined" 格式外,摩根还支持其他很多格式,如 "common"、":method :url :status :res[content-length] - :response-time ms" 等,你可以根据自己的需要进行配置。

API

摩根接受一个字符串作为参数,用于设置日志格式。除了预设格式之外,你也可以使用自定义函数来记录日志,函数接收三个参数:请求对象 req、响应对象 res 和一个回调函数 next。

const express = require('express');
const morgan = require('morgan');

const app = express();

// 自定义日志格式
app.use(morgan((tokens, req, res) => {
  return [
    `<${process.pid}>`, // 进程 ID
    tokens.method(req, res),
    tokens.url(req, res),
    '->', // 分隔符
    tokens.status(req, res),
    tokens['response-time'](req, res), 'ms', // 响应时间
    `- ${tokens.res(req, res, 'content-length')} bytes`, // 响应数据大小
  ].join(' ');
}));

// 其他路由和中间件

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

在这个例子中,我们使用自定义日志格式来记录请求信息,其中包括进程 ID、请求方法、请求 URL、响应状态码、响应时间和响应数据大小等信息。

结语

摩根是一个非常强大的 HTTP 请求日志中间件,它可以帮助我们快速记录和查看服务器接收到的每个请求的相关信息。为了更好地理解和使用摩根,你可以阅读其官方文档:https://github.com/expressjs/morgan