MST
星途 面试题库

面试题:Node.js Express 中如何实现基础的日志记录

在Node.js的Express应用中,阐述使用morgan中间件进行日志记录的步骤及常用配置参数。若要将日志输出到文件,应如何调整配置?
50.5万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

使用morgan中间件进行日志记录的步骤

  1. 安装morgan:在项目目录下通过npm安装morgan,运行npm install morgan
  2. 引入morgan:在Express应用程序的入口文件(通常是app.jsindex.js)中,使用const morgan = require('morgan');引入morgan。
  3. 使用morgan中间件:在定义Express应用实例后,将morgan作为中间件使用,如app.use(morgan('dev'));

常用配置参数

  1. dev:精简格式的日志输出,适合开发环境。例如:GET / 200 31.821 ms - 2,其中包含请求方法、请求路径、状态码、响应时间和响应字节数。
  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。
  3. short:比dev稍微详细一点的格式,例如:127.0.0.1 GET / 200 30 - 29.398 ms,包含远程地址、请求方法、请求路径、状态码、响应字节数和响应时间。

将日志输出到文件的配置调整

  1. 引入fs模块:在Express应用程序的入口文件中,使用const fs = require('fs');引入Node.js的文件系统模块。
  2. 创建日志文件流:通过fs.createWriteStream创建一个可写流来写入日志文件,例如:const accessLogStream = fs.createWriteStream('access.log', { flags: 'a' });,这里flags: 'a'表示以追加模式写入文件。
  3. 配置morgan使用文件流:将accessLogStream传递给morgan,如app.use(morgan('combined', { stream: accessLogStream })); ,这样日志就会输出到access.log文件中,使用的是combined日志格式。