2013-02-01 94 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)。無論如何配置日誌記錄並不總是合適的。 –

相關問題