我想將模塊添加到使用標準Python(2.7)日誌記錄庫的項目中。我想實現的是以下幾點:使用Python日誌記錄器記錄到文件和stderr
- 任何等於或大於警告去哪裏主程序(我的控制範圍之外)已配置日誌去(通常是標準錯誤)
- 其他一切(調試更糟消息主要)轉到日誌文件
請注意,這裏的關鍵問題是我不想修改全局日誌記錄設置,因爲這些設置由主應用程序控制。否則,我會用例子在這裏:
http://docs.python.org/2/howto/logging-cookbook.html#logging-to-multiple-destinations
我已經試過這樣:
logger = logging.getLogger('my_module')
logger.setLevel(logging.WARNING)
fh = logging.FileHandler('my_module.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
但當時我只是得到我的文件警告消息。
如果我替換上面的一行:
logger.setLevel(logging.DEBUG)
然後我得到了這兩個標準錯誤,我的文件調試消息。
然後我嘗試這樣的:
logger = logging.getLogger('my_module')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.NullHandler())
console = logging.StreamHandler()
console.setLevel(logging.WARNING)
logger.addHandler(console)
fh = logging.FileHandler('my_module.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
但同樣沒有運氣。
所以,我可以實現這一點,而無需調用basicConfig()或其他任何影響全球日誌記錄基礎設施?如果可能,我只想在這裏修改我自己的模塊。
謝謝!
感謝您的回覆。如果無法這樣做,那麼在這種情況下,模塊可以做什麼?我不太瞭解你的關於爲庫配置DEBUG的函數的建議。除了文件,我不希望圖書館進行DEBUG,我希望看到所有內容。我不確定此記錄器層次結構如何工作:我創建的記錄器是應用程序配置的根記錄器的子項? – introiboad
@introiboad:我在評論中添加了對問題的答案。 – jfs
謝謝你的回答。 – introiboad