nodejs后端 通过 express中的morgan输出日志
express是nodejs的框架,morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。如果书输出的格式不是自己想要的,就需要自定义格式。format:日志格式,本质是代表日志格式的字符串,比如 :method :url :status :res[content-length] - :response-time ms。token:forma
·
express是nodejs的框架,morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用。morgan的API非常少,使用频率最高的就是morgan(),作用是返回一个express日志中间件。如果书输出的格式不是自己想要的,就需要自定义格式
morgan.format(name, format); // 自定义日志格式
morgan.token(name, fn); // 自定义token
首先搞清楚morgan中的两个概念:format 跟 token。非常简单:
-
format:日志格式,本质是代表日志格式的字符串,比如 :method :url :status :res[content-length] - :response-time ms。
-
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}; //如果不写无法输出返回的日志
最后日志的格式
更多推荐
所有评论(0)