推荐答案
// www.javascriptcn.com code example
const express = require('express');
const morgan = require('morgan');
const app = express();
// 使用 morgan 中间件记录 HTTP 请求日志
app.use(morgan('combined'));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});本题详细解读
1. 什么是 morgan 中间件?
morgan 是一个用于记录 HTTP 请求日志的中间件。它可以帮助开发者在控制台或日志文件中查看每个请求的详细信息,如请求方法、URL、响应状态码、响应时间等。
2. 如何安装 morgan?
在使用 morgan 之前,需要通过 npm 安装它:
npm install morgan
3. morgan 的常用日志格式
morgan 提供了多种预定义的日志格式,常用的有:
combined: 标准的 Apache 组合日志格式,包含远程地址、请求方法、URL、HTTP 版本、响应状态码、响应长度、Referrer 和 User-Agent 等信息。common: 类似于combined,但不包含 Referrer 和 User-Agent。dev: 开发环境使用的简洁格式,包含响应状态码、请求方法、URL 和响应时间。short: 比dev更简洁的格式,只包含请求方法、URL、响应状态码和响应时间。tiny: 最简洁的格式,只包含请求方法、URL、响应状态码和响应时间。
4. 自定义日志格式
除了使用预定义的格式,morgan 还允许开发者自定义日志格式。例如:
app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));5. 将日志写入文件
默认情况下,morgan 会将日志输出到控制台。如果需要将日志写入文件,可以使用 Node.js 的 fs 模块:
const fs = require('fs');
const path = require('path');
// 创建一个写入流
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' });
// 使用 morgan 中间件并将日志写入文件
app.use(morgan('combined', { stream: accessLogStream }));6. 总结
通过使用 morgan 中间件,开发者可以轻松地记录 HTTP 请求日志,并根据需要选择不同的日志格式或自定义格式。此外,还可以将日志写入文件以便后续分析。