如何不截断Mongoid日志?

时间:2016-01-12 20:50:31

标签: ruby-on-rails ruby mongoid

这是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

2 个答案:

答案 0 :(得分:14)

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

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

修改

执行此操作的正确方法是向mongoid.yml文件添加truncate_logs选项:

<强>配置/ mongoid.yml:

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

-

Mongoid的文档很差

答案 1 :(得分:1)

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

  • 首先ps aux | grep mongod

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

  • 如果没有,您会发现类似mongod --profile=1 --slowms=1 --config /usr/local/etc/mongod.conf

  • 的内容
  • cat /usr/local/etc/mongod.conf找到类似以下内容的内容

    systemLog:   目的地:档案   路径:/usr/local/var/log/mongodb/mongo.log   logAppend:true

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

这样您就可以查看完整的未截断日志。

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

详细了解db.setLogLevel()