我正在使用node
进行日志记录,但是我想将此对象morgan('dev')
[在控制台日志中]存储到数据库中。
喜欢
"GET /users/get 200 195.315 ms - 393"
如何获取该对象?
如何爆炸并将数据插入数据库上方的字段(方法,端点,状态)?
答案 0 :(得分:0)
您可以创建一个小型中间件,该中间件将监听'finish'事件的响应并将数据保存到数据库中:
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();
});
});
答案 1 :(得分:0)
已经有一些模块可以为已知存储提供流兼容的接口,例如 Mongoose-Morgan,它允许您将 Mongoose 日志直接流式传输到 MongoDB。但是,如果您找不到与摩根兼容的模块,您可以简单地编写一个函数,该函数返回一个可写流并将信息发送到您需要的地方。
Morgan NPM Logger – The Beginner’s Guide
创建一个新的命名格式:
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}))