2013-02-01 52 views
2

我正在查看python logging模块来替换自定义代码,但我无法决定我应该在哪里调用basicConfig方法。什么时候我们应该在Python项目中调用logging.basicConfig?

如果我开发一个名为mymodule的模块,它有子模块,在mymodule中只调用一次basicConfig似乎是个好主意。

但是,如果我(或其他人)希望自己的模块或程序中使用mymodule并使用logging模块,他们不能打电话basicConfig自己和被卡住在mymodulebasicConfig的选项。

我知道有黑客来解决这个问题。但是,使用basicConfig的正确方法是什么?应该在哪里调用?

回答

2

在您的程序启动代码中调用它;从最好是__name__ == '__main__'测试触发:

if __name__ == '__main__': 
    import sys 

    main(sys.argv) 

,把你需要做的,是不是你的模块的库的一部分进入的主要功能,包括日志配置应有尽有。

+0

看来你是对的。我用这种方法看到的缺点是它需要用户知道模块使用日志记录才能看到格式化的日志记录。这可能需要更多的知识,例如,在模块中有对象的调试参数。 –

+0

在模块中写入是否完全错误:'if len(logging.root.handlers)== 0:logging.basicConfig()' –

+0

不管设置库的日志记录, *文档*您可以使用哪些日志记录配置,但使用该库将其留给应用程序进行设置。看看['sqlalchemy'库如何记录这个](http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#configuring-logging)。无论如何配置日志记录并不总是合适的。 –

相关问题