linux

Node.js日志中如何追踪请求

小樊
45
2025-03-05 06:12:24
栏目: 编程语言

在Node.js中,可以使用中间件来追踪请求。这里以Express框架为例,介绍如何使用morgan中间件来记录请求日志。

  1. 首先,确保已经安装了Express和morgan:
npm install express morgan
  1. 在你的Node.js应用中引入Express和morgan:
const express = require('express');
const morgan = require('morgan');
  1. 使用morgan中间件。在你的Express应用中,添加以下代码:
const app = express();

// 设置日志格式
morgan.token('method', function (req, res) {
  return req.method;
});

morgan.token('url', function (req, res) {
  return req.url;
});

morgan.token('status', function (req, res) {
  return res.statusCode;
});

morgan.token('response-time', function (req, res) {
  return res.get('X-Response-Time');
});

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

// 其他路由和中间件
// ...

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

上述代码中,我们自定义了morgan的日志格式,包括请求方法、URL、状态码、响应时间和响应内容长度。你可以根据需要自定义日志格式。

现在,每当有请求进入你的应用时,morgan都会记录相关信息到控制台。如果你想将日志记录到文件中,可以使用morganfile方法:

const fs = require('fs');
const path = require('path');

// 创建日志目录
const logDir = path.join(__dirname, 'logs');
if (!fs.existsSync(logDir)) {
  fs.mkdirSync(logDir);
}

// 将日志输出到文件
app.use(morgan('combined', { stream: { write: message => fs.appendFileSync(path.join(logDir, 'access.log'), message) } }));

这样,所有的请求日志都会被记录到logs/access.log文件中。你可以根据需要调整日志文件的路径和名称。

0
看了该问题的人还看了