node.js - 使用 winston-mongodb、express-winston 和 winston 进行日志记录

标签 node.js mongodb express winston

我正在使用 winston、expressWinston、winston-mongoDB 来管理我的 NodeJs 应用程序中的日志。

同时使用 winston-mongodb transport 和 express-winston;我可以按以下格式将日志存储到我的 mongoDB 集合中。 (元:真)

{
"_id" : ObjectId("5a124f9781d911337ebeb98d"),
"timestamp" : ISODate("2017-11-20T03:44:23.336Z"),
"level" : "info",
"message" : "GET /stylesheets/bootstrap.css 304 2ms",
"meta" : {
    "res" : {
        "statusCode" : 304
    },
    "req" : {
        "url" : "/stylesheets/bootstrap.css",
        "headers" : {
            "host" : "localhost:3000",
            "connection" : "keep-alive",
        },
        "method" : "GET",
        "httpVersion" : "1.1",
        "originalUrl" : "/stylesheets/bootstrap.css",
        "query" : {}
    },
    "responseTime" : 2
}

我可以在元数据中获取请求/响应信息。

这些细节是否有可能直接成为收藏的一部分? ,像这样:

{
"_id" : ObjectId("5a12537d81b6b634cb7d4696"),
"timestamp" : ISODate("2017-11-20T04:01:01.229Z"),
"level" : "info",
"message" : "GET /stylesheets/bootstrap.css 304 11ms",
"status": 200,
"requestUrl": '/',
"requestMethod": 'GET',
"remoteIp": '::1'
"meta" : {}

最佳答案

你可以覆盖默认的日志函数实现来保存你想要的任何东西

let logger = new winston.Logger(options);
logger.log = function () {
    var args = arguments;
    // here you can transform your meta obj
    winston.Logger.prototype.log.apply(this, args);
};

希望对你有所帮助

关于node.js - 使用 winston-mongodb、express-winston 和 winston 进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385078/

相关文章:

javascript - nodejs 域实际上如何在多个请求的幕后工作?

node.js - Mongoose - 尝试在 MEAN 堆栈中执行 'JOINS'

MongoDB批量运算符,如果不存在则插入

mongodb - 清理 Express 应用程序中的输入字段

node.js - 了解 express 的 app.mountpath 属性

node.js - socket.io 获取所有已连接客户端数量的房间

node.js - firebase-admin:获取失败通知传递结果的 token

MongoDB:Mapreduce:reduce->multiple 尚不支持

node.js - Express 4.0 中的 Heroku socket.io 示例错误

mysql - Node.js、请求、MySQL 和连接池导致无限阻塞/卡住行为?