我想以這種方式配置我的Python記錄器,以便記錄器的每個實例都應該登錄與記錄器本身名稱相同的文件。Python記錄器動態文件名
例如爲:
log_hm = logging.getLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log
log_sc = logging.getLogger('scripts')
log_sc.debug("Testing Scripts") # Should log to /some/path/scripts.log
log_cr = logging.getLogger('cron')
log_cr.info("Testing cron") # Should log to /some/path/cron.log
我想保留它通用的,不想硬編碼的所有類型的記錄器的名字,我可以有。那可能嗎?
是否可以在「getLogger」調用之前添加處理程序,以便每次調用getLogger時都不必添加它? – sharjeel 2010-05-03 10:12:45
@sharjeel:在初始化期間設置處理程序,以後所有對'getLogger()'的調用都不需要添加處理程序。解決方案與〜unutbu的類似。在那個例子中'myLogger'應該只被調用一次,否則你會產生奇怪的副作用。 – 2010-05-03 10:39:00
我喜歡這種方法。您還可以跟蹤打開的文件和新的實例,檢查文件是否已經打開,然後不要重新打開。 雖然,在我的情況下,這種科學不是必需的:-) – sharjeel 2010-05-07 14:26:19