cappedMax无法在Ubuntu上Node.js中的Winstonmongodb记录器中工作

cappedMax not working in winston-mongodb logger in Node.js on Ubuntu

本文关键字:Winstonmongodb 中的 记录器 工作 js Node Ubuntu cappedMax      更新时间:2023-09-26

我已经使用winston模块在Node.js中创建了一个记录器,并通过需要带有以下选项的winston-mogodb模块来添加MongoDB传输:

{
  db: config.db[k.DB_ENV.AUTHOR],
  username: config.dbUser,
  password: config.dbPassword,
  collection: 'log-aggregation',
  storeHost: true,
  capped: true,
  cappedMax: 10 // documents
}

我希望记录器为每10个文档创建一个新集合。但是记录器继续在相同的集合中进行日志记录。我对collection: 'log-aggregation'行进行了注释,以检查这些选项是否真的有效,然后它开始登录到默认的'log'集合。

那么我的错误在哪里呢?cappedMax选项是否有文档大小的最小值?我在cappedSize选项中尝试过,该选项也有10到1000个值,但仍然没有创建新的集合。

我想知道cappedSize和cappedMax选项的最小和最大允许值?

我还想知道创建的新集合的名称是什么?

这是我用来获取多个日志的方法:

var winston = require('winston');
require('winston-mongodb').MongoDB;

winston.loggers.add('userLog',{
    transports : [
        new(winston.transports.MongoDB)({
            db : 'mongodb://username:password.mongolab.com:5555/log_db',
            collection : 'userLog',
            capped : true
        }),
    ]
});
winston.loggers.add('profileLog',{
    transports : [
        new(winston.transports.MongoDB)({
            db : 'mongodb://username:password.mongolab.com:5555/log_db',                collection : 'profileLog',
            capped : true
        }),
    ]
});

它工作良好,没有可观察到的延迟。

附言:您可以在capped:true 之后或之前添加所有想要的选项

玩得开心!

因此,只需确认winston mongodb的"capped"功能是:


capped:       // true or false
cappedMax:    // [int] number of documents per collection
cappedSize:    // [byte-size] Size of documents capped per collection in bytes

正在工作,但需要注意的是,为了使其工作,您不能使用这些属性修改和现有的集合。人们认为你是从零开始的。例如,如果你已经创建了你的收藏,现在想添加有上限的功能,那么这将不起作用!

您需要在数据库中完全转储集合,然后从头开始,或者只创建一个新集合。

例如,这是从我的transports数组中提取的代码。

new transports.MongoDB({
          level: 'error',
          db: process.env.MONGO_CONNECTION_LOG_STRING,
          options: { useUnifiedTopology: true },
          format: combine(timestamp(), json()),
          collection: 'prod_log',
          capped: true,
          cappedMax: 2
        })

因此,目前我确保我的数据库中不存在此集合,此配置将只允许在任何时候将2个文档存储在我的集合中,并且任何未来的错误都将覆盖任何现有的错误,因此您在集合中只有最后两个"错误"日志/文档。

玩了一段时间,我希望它能有所帮助。

我遇到了同样的问题,但我只需更新winston-mongodb版本就解决了它npm i winston mongodb