首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyMongo设置日志级别

问PyMongo设置日志级别
EN

Stack Overflow用户
提问于 2017-03-07 02:19:48
回答 1查看 2.1K关注 0票数 2

我想通过运行.py脚本来设置mongodb.conf文件中各个组件的日志级别。我通常只是对数据库使用基本的命令,如update_one或insert,没有任何问题。我得到的错误是:

"TypeError:'Collection‘对象不可调用。如果您打算在'Database’对象上调用'setloglevel‘方法,它将失败,因为不存在这样的方法。

我已经尝试过setLogLevel、set_log_level和其他一些网站。在pymongo文档或在线上找不到任何东西。

如何设置日志级别?可以吗?提前谢谢。

代码:

代码语言:javascript
复制
def setlvl():

## Connection to the Mongo Service ##

  try:
      conn=pymongo.MongoClient("myip_address")
      print("Connected successfully!!!")
  except pymongo.errors.ConnectionFailure:
     print("Could not connect to MongoDB: %s" % e )

  print("Connection:",conn)

## Connect to the DataBase ##

  db = conn.mydatabase
  print("database:", db)      

## Update log level ##

  loglvl = db.setloglevel
  result=loglvl(5, "storage")

setlvl()
EN

回答 1

Stack Overflow用户

发布于 2017-03-07 03:53:29

"setLogLevel“是在Javascript中实现的mongo外壳函数。您可以通过在mongo shell中键入其名称(不带括号)来查看任何mongo shell函数的实现:

代码语言:javascript
复制
> db.setLogLevel
function (logLevel, component) {
    return this.getMongo().setLogLevel(logLevel, component);
}

好的,那么让我们更深入地了解一下实现:

代码语言:javascript
复制
> db.getMongo().setLogLevel
function (logLevel, component) {
    componentNames = [];
    if (typeof component === "string") {
        componentNames = component.split(".");
    } else if (component !== undefined) {
        throw Error("setLogLevel component must be a string:" + tojson(component));
    }
    var vDoc = {verbosity: logLevel};

    // nest vDoc
    for (var key, obj; componentNames.length > 0;) {
        obj = {};
        key = componentNames.pop();
        obj[key] = vDoc;
        vDoc = obj;
    }
    var res = this.adminCommand({setParameter: 1, logComponentVerbosity: vDoc});
    if (!res.ok)
        throw _getErrorWithCode(res, "setLogLevel failed:" + tojson(res));
    return res;
}

现在我们看到外壳程序在管理数据库上运行"setParameter“函数。请参阅setParameter文档:

https://docs.mongodb.com/manual/reference/command/setParameter/

因为"setParameter“是一个MongoDB命令,所以我们可以在PyMongo中运行它,就像我们在PyMongo中运行任何MongoDB命令一样:

代码语言:javascript
复制
from bson import SON

from pymongo import MongoClient

c = MongoClient()

result = c.admin.command(SON([
    ("setParameter", 1),
    ("logComponentVerbosity", {
        "storage": {
            "verbosity": 5,
            "journal": {
                "verbosity": 1
            }
        }
    })]))

print(result)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42632816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档