在Node.js中,可以使用中間件來追蹤請求。這里以Express框架為例,介紹如何使用morgan中間件來記錄請求日志。
npm install express morgan
const express = require('express');
const morgan = require('morgan');
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都會記錄相關信息到控制臺。如果你想將日志記錄到文件中,可以使用morgan
的file
方法:
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
文件中。你可以根據需要調整日志文件的路徑和名稱。