如何同时使用 express-winston 和 winston-mongodb?
How to use express-winston and winston-mongodb together?
我正在使用 express-winston
and winston-mongodb
将快速请求记录到 mongodb。
express-winston 配置:
expressWinston.logger({
meta: true,
//...other unrelated config
})
winston-mongo数据库配置:
new MongoDB({
//...other unrelated config
})
登录 mongodb 有效,但 meta
字段为空。 登录 file/console 完美。
mongo 插件无法识别 express 插件的日志格式。
我怎样才能让他们玩得开心?
当您查看 express-winston 和 winston-mongodb 代码时,您可以很容易地看出区别。
winston-mongodb 将匹配 metaKey 字段的值写入指定集合。
所以,如果你这样定义,meta字段就不会为null。
...
transports: [
new winston.transports.Console({
format: winston.format.json({
space: 2
})
}),
new winston.transports.MongoDB({
db: config.db.mongooseURI,
options: config.db.options,
collection:'logs',
capped:true,
metaKey:'meta'
}),
],
meta: true,
...
这就是最终对我有用的:v6.12.1 稍后注意到,虽然这适用于数据库日志记录,但元数据对于文件传输是空的。不知道为什么。
const winston = require('winston');
module.exports = function(err, req, res, next) {
winston.error(err.message, {metadata: { prop: err } });
res.status(500).send('Something failed.');
};
如果您想登录到文件并 MongoDB 那么:
winston.add(
new winston.transports.MongoDB({
db: process.env.CONNECTIONSTRING,
options: { useUnifiedTopology: true },
metaKey: 'meta'
})
)
module.exports = function (err, req, res, next) {
// Log the exception
winston.error({message: err.message, level: err.level, stack: err.stack, meta: err})
res.status(500).send("Something failed..Cannot connect to Server");
};
我正在使用 express-winston
and winston-mongodb
将快速请求记录到 mongodb。
express-winston 配置:
expressWinston.logger({
meta: true,
//...other unrelated config
})
winston-mongo数据库配置:
new MongoDB({
//...other unrelated config
})
登录 mongodb 有效,但 meta
字段为空。 登录 file/console 完美。
mongo 插件无法识别 express 插件的日志格式。
我怎样才能让他们玩得开心?
当您查看 express-winston 和 winston-mongodb 代码时,您可以很容易地看出区别。 winston-mongodb 将匹配 metaKey 字段的值写入指定集合。 所以,如果你这样定义,meta字段就不会为null。
...
transports: [
new winston.transports.Console({
format: winston.format.json({
space: 2
})
}),
new winston.transports.MongoDB({
db: config.db.mongooseURI,
options: config.db.options,
collection:'logs',
capped:true,
metaKey:'meta'
}),
],
meta: true,
...
这就是最终对我有用的:v6.12.1 稍后注意到,虽然这适用于数据库日志记录,但元数据对于文件传输是空的。不知道为什么。
const winston = require('winston');
module.exports = function(err, req, res, next) {
winston.error(err.message, {metadata: { prop: err } });
res.status(500).send('Something failed.');
};
如果您想登录到文件并 MongoDB 那么:
winston.add(
new winston.transports.MongoDB({
db: process.env.CONNECTIONSTRING,
options: { useUnifiedTopology: true },
metaKey: 'meta'
})
)
module.exports = function (err, req, res, next) {
// Log the exception
winston.error({message: err.message, level: err.level, stack: err.stack, meta: err})
res.status(500).send("Something failed..Cannot connect to Server");
};