簡體   English   中英

將自定義處理程序添加到沒有記錄器實例的Python記錄模塊中?

[英]Adding custom handler to Python logging module without a logger instance?

這是答案的后續問題, 如何從Python日志記錄模塊獲取非阻塞/實時行為? (輸出到PyQt QTextBrowser)X.Jacobs提供。

在Python日志記錄模塊中,添加自定義處理程序的通常方法是定義一個從logging.Handler繼承的處理程序類(我們將其稱為CustomLogHandler )。 要將其附加到logging過程中,通常需要執行以下操作:

import logging

class CustomLogHandler(logging.Handler):
    ... (some code here)...

logger = logging.getLogger()
logger.addHandler(CustomLogHandler)

其中addHandlerlogger實例的方法。

:假設我們希望得到一個logger (即我們不想做以上)。 是否可以將CustomLogHandler附加到logging本身?

請參閱“ 如何從Python日志記錄模塊獲取非阻塞/實時行為”中的評論? (輸出到PyQt QTextBrowser)作為上下文。

前提是可以使用自定義處理程序,而無需引用logger實例。

logging.getLogger()返回根記錄器實例,該對象沒有進一步的“啟動”,並且沒有其他東西可以將處理程序附加根之外。

諸如logging.error()類的模塊級功能使用root logger。 引用文檔

logging.error(msg[, *args[, **kwargs]])
在根記錄器上記錄錯誤級別為ERROR的消息。 參數解釋為debug()。

換句話說, logging.error()類的函數只需調用getLogger().error()

CustomLogHandler附加到根記錄器是將其添加到模塊的正確方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM