我有一個簡單的Python腳本,使用內置的logging
。Python - 避免在函數之間傳遞記錄器引用?
我正在配置函數內的日誌記錄。基本結構是這樣的:
#!/usr/bin/env python
import logging
import ...
def configure_logging():
logger = logging.getLogger("my logger")
logger.setLevel(logging.DEBUG)
# Format for our loglines
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Setup console logging
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
# Setup file logging as well
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
def count_parrots():
...
logger.debug??
if __name__ == '__main__':
logger = configure_logging()
logger.debug("I'm a log file")
parrots = count_parrots()
我可以從裏面__main__
調用記錄的罰款。但是,如何從count_parrots()函數內部調用記錄器?處理像這樣配置記錄器的最pythonic方式是什麼?
好的,所以我可以在每個需要記錄的函數的開頭調用logging.getLogger。似乎有點浪費和重複肯定?很公平。或者,我會更好地面向對象,並試圖將整個過程整合到一個類中去? (我知道這是一個非常普遍的問題,我只是在尋找Python世界中的成就)。 – victorhooi 2011-05-17 02:30:54
你可以把你的函數放在一個類中,使用logger作爲實例變量,或者(我更喜歡)創建一個裝飾器,將日誌函數添加到你的單個函數中 – 2011-05-19 12:17:16
這個答案顯示了Python'logging'幾乎所有的錯誤。模塊... – rkrzr 2014-04-30 15:04:17