如何不截断 Mongoid 日志?

How to not truncate Mongoid logs?

这是 Mongoid 记录操作的方式:

D, [2016-01-12T18:42:19.790639 #7906] DEBUG -- : MONGODB | localhost:27017 | app_test.update | STARTED | {"update"=>"users", "updates"=>[{"q"=>{"_id"=>BSON::ObjectId('5695652bc54d2d1ee200001e')}, "u"=>{"$addToSet"=>{"favorite_ids"=>{"$each"=>[BSON::ObjectId('5695652bc54d2d1ee200001f')]}}}, "multi"=>false, "upsert"=>false}], "writeConcern"=>{:w=>1}, "orde...

我希望能够看到完整的日志消息。这可能吗?

Obs:我正在使用 Mongoid 5

Mongoid 会截断日志,因此您应该检查 mongo 日志。方法如下:

  • 第一个ps aux | grep mongod

  • 如果您指定了一个日志文件,您将在您的 mongod 实例上找到一个 --logpath 选项。

  • 如果没有你会发现这样的东西mongod --profile=1 --slowms=1 --config /usr/local/etc/mongod.conf

  • cat /usr/local/etc/mongod.conf 找到类似下面的东西

    系统日志: 目的地:文件 路径:/usr/local/var/log/mongodb/mongo.log logAppend: true

  • 然后tail -f /usr/local/var/log/mongodb/mongo.log

这样您可以查看完整的 un-truncated 日志。

如果您看不到调试日志,请登录 mongo,选择您的数据库,然后 db.setLogLevel(number) 其中 number 介于 1 到 5 之间。

阅读更多关于 db.setLogLevel()

在深入研究 Mongo Ruby Driver(被 Mongoid >= 5 使用)之后,我找到了一个解决方案:

Mongo::Monitoring::CommandLogSubscriber::LOG_STRING_LIMIT = 1_000

编辑

正确的方法是将 truncate_logs 选项添加到 mongoid.yml 文件:

config/mongoid.yml:

development:
  clients:
    default:
      database: database_name_development
      hosts:
        - localhost:27017
      options:
        truncate_logs: false

--

Mongoid 的文档很差