1
我們正在爲其設置日誌系統的python程序/庫工作。基本上我們想要在一個文件上登錄終端。爲此,我們將使用標準分發中嵌入的優秀日誌記錄軟件包。python日誌檢索特定處理程序
日誌級別應該由用戶通過其首選項進行自定義。我的問題是如何檢索連接到記錄器的處理程序之一?我在想的東西有點像這樣:
import logging
class NullHandler(logging.Handler):
def emit(self,record):
pass
HANDLERS = {}
HANDLERS['console'] = logging.StreamHandler()
HANDLERS['logfile'] = logging.FileHandler('test.log','w')
logging.getLogger().addHandler(NullHandler())
logging.getLogger('console').addHandler(HANDLERS['console'])
logging.getLogger('logfile').addHandler(HANDLERS['logfile'])
def set_log_level(handler, level):
if hanlder not in HANDLERS:
return
HANDLERS[handler].setLevel(level)
def log(message, level, logger=None):
if logger is None:
logger= HANDLERS.keys()
for l in logger:
logging.getLogger(l).log(level, message)
正如你看到的,我的實現意味着使用該處理器的全球字典來存儲我創建的處理程序的實例。我找不到更好的方法來做到這一點。在這種設計中,可以這樣說,因爲我只是在每個記錄器中插入一個處理程序,所以我的記錄器對象的處理程序屬性應該可以,但是我正在尋找更一般的東西(例如,如果有一天某個處理程序被插入,怎麼辦我的記錄器之一?)
您對此有何看法?
非常感謝你
埃裏克