我正在使用morgan('dev')
日志记录,但我想将此对象"GET /users/get 200 195.315 ms - 393"
[在控制台日志中] 存储到数据库中。
喜欢
- method : get
- endpoint : /users/get
- status : 200
我怎样才能得到这个对象?
如何爆炸并将数据插入数据库上面的字段(方法、端点、状态)?
我正在使用morgan('dev')
日志记录,但我想将此对象"GET /users/get 200 195.315 ms - 393"
[在控制台日志中] 存储到数据库中。
喜欢
- method : get
- endpoint : /users/get
- status : 200
我怎样才能得到这个对象?
如何爆炸并将数据插入数据库上面的字段(方法、端点、状态)?
您可以创建一个小型中间件,该中间件将侦听Response的“完成”事件并将数据保存到数据库中:
app.use((req, res, next) => {
const method = req.method;
const endpoint = req.originalUrl;
res.on('finish', () => {
const status = res.status;
saveRequestDataToDatabase(method, endpoint, status);
next();
});
});
已经有一些模块可以为已知存储提供流兼容接口,例如 Mongoose-Morgan,它允许您将 Mongoose 日志直接流式传输到 MongoDB。但是,如果您找不到与 morgan 兼容的模块,您可以简单地编写一个函数,该函数返回一个可写流并将信息发送到您需要的地方。 摩根 NPM 记录器 - 初学者指南
创建一个新的命名格式:
const morgan = require('morgan')
const Writable = require("stream").Writable
morgan.token("custom", "-method: :method -endpoint: :url -status: status")
按名称使用新格式:
class MyStream extends Writable {
write(line) {
//here you send the log line to wherever you need
console.log("Logger:: ", line)
}
}
let writer = new MyStream()
app.use(morgan(‘custom’, {stream: write}))