面试题答案
一键面试使用morgan中间件进行日志记录的步骤
- 安装morgan:在项目目录下通过npm安装morgan,运行
npm install morgan
。 - 引入morgan:在Express应用程序的入口文件(通常是
app.js
或index.js
)中,使用const morgan = require('morgan');
引入morgan。 - 使用morgan中间件:在定义Express应用实例后,将morgan作为中间件使用,如
app.use(morgan('dev'));
。
常用配置参数
- dev:精简格式的日志输出,适合开发环境。例如:
GET / 200 31.821 ms - 2
,其中包含请求方法、请求路径、状态码、响应时间和响应字节数。 - combined:标准的Apache日志格式,包含更多信息,例如:
127.0.0.1 - - [22/Jan/2024:12:34:56 +0000] "GET / HTTP/1.1" 200 1234 "http://example.com" "Mozilla/5.0"
,包含远程地址、远程用户、时间、请求方法、请求URL、HTTP版本、状态码、响应字节数、Referer和User - Agent。 - short:比
dev
稍微详细一点的格式,例如:127.0.0.1 GET / 200 30 - 29.398 ms
,包含远程地址、请求方法、请求路径、状态码、响应字节数和响应时间。
将日志输出到文件的配置调整
- 引入fs模块:在Express应用程序的入口文件中,使用
const fs = require('fs');
引入Node.js的文件系统模块。 - 创建日志文件流:通过
fs.createWriteStream
创建一个可写流来写入日志文件,例如:const accessLogStream = fs.createWriteStream('access.log', { flags: 'a' });
,这里flags: 'a'
表示以追加模式写入文件。 - 配置morgan使用文件流:将
accessLogStream
传递给morgan,如app.use(morgan('combined', { stream: accessLogStream }));
,这样日志就会输出到access.log
文件中,使用的是combined
日志格式。