express是nodejs的框架,morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。morgan的API非常少,使用频率最高的就是morgan(),作用是返回一个express日志中间件。如果书输出的格式不是自己想要的,就需要自定义格式

morgan.format(name, format); // 自定义日志格式
morgan.token(name, fn); // 自定义token

首先搞清楚morgan中的两个概念:format 跟 token。非常简单:

  1. format:日志格式,本质是代表日志格式的字符串,比如 :method :url :status :res[content-length] - :response-time ms。

  2. token:format的组成部分,比如上面的:method、:url即使所谓的token

切入正题,如何使用(以下使用的是margin.token())

安装morgan
npm install express morgan

//以下代码都在app.js中
var morgan = require('morgan');


// 自定义格式化函数  第一个参数就是自定义的格式化函数,第二个参数就是格式化函数返回的内容
morgan.token('body', (req, res) => JSON.stringify(req.body)); // 记录请求参数
morgan.token('response', (req, res) =>  JSON.stringify(res.locals.data)); // 记录返回值

// 使用自定义格式化函数创建日志中间件 最后面的response、body就是自定义的格式化函数
// :method:HTTP请求方法
// :url:请求路径
// :status:响应状态码
// :res[content-length]:响应数据长度
// :response-time:响应时间
//以上都是API自带的占位符
const logger = morgan(':method :url :status :response-time ms - :response :body', {
  stream: process.stdout // 将日志输出到控制台 一般在控制台输出就可以
});

app.use(logger);


//然后最重要的一步,需要在定义接口返回的值的js文件中写入
res.locals.data = {result}; //如果不写无法输出返回的日志

最后日志的格式

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐