python3從零學習-5.6.4、日誌標準庫logging

源代碼: Lib/logging/__init__.py
 

class logging.Logger

    propagate
        如果這個屬性爲真,記錄到這個記錄器的事件將會傳遞給這個高級別管理器的記錄器(原型),此外任何關聯到這個記錄器的管理器。消息會直接傳遞給原型記錄器的管理器 - 既不是這個原型記錄器的級別也不是過濾器是在考慮的問題。
        如果等於假,記錄消息將不會傳遞給這個原型記錄器的管理器。
        構造器將這個屬性初始化爲 True。
 
 
    setLevel(level)
        給 logger 設置閾值爲 level 。日誌等級小於 level 會被忽略。嚴重性爲 level 或更高的日誌消息將由該 logger 的任何一個或多個 handler 發出,除非將處理程序的級別設置爲比 level 更高的級別。
        創建一個 logger 時,設置級別爲 NOTSET (當 logger 是根 logger 時,將處理所有消息;當 logger 是非根 logger 時,所有消息會委派給父級)。注意根 logger 創建時使用的是 WARNING 級別。
        委派給父級的意思是如果一個記錄器的級別設置爲NOTSET,遍歷其祖先記錄器鏈,直到找到另一個NOTSET級別的祖先或到達根爲止。
        如果發現某個父級的級別 不是NOTSET ,那麼該父級的級別將被視爲發起搜索的記錄器的有效級別,並用於確定如何處理日誌事件。
        如果到達根 logger ,並且其級別爲NOTSET,則將處理所有消息。否則,將使用根記錄器的級別作爲有效級別。
 
 
    isEnabledFor(lvl)
        Indicates if a message of severity lvl would be processed by this logger. This method checks first the module-level level set by logging.disable(lvl) and then the logger’s effective level as determined by getEffectiveLevel().
 
 
    getEffectiveLevel()
        指示此記錄器的有效級別。如果通過 setLevel() 設置了除 NOTSET 以外的值,則返回該值。否則,將層次結構遍歷到根,直到找到除 NOTSET 以外的其他值,然後返回該值。返回的值是一個整數,通常爲 logging.DEBUG、 logging.INFO 等等。
 
 
    getChild(suffix)
        返回由後綴確定的,是該記錄器的後代的記錄器。 因此,logging.getLogger('abc').getChild('def.ghi') 與 logging.getLogger('abc.def.ghi') 將返回相同的記錄器。 這是一個便捷方法,當使用如 __name__ 而不是字符串字面值命名父記錄器時很有用。
 
 
    debug(msg, *args, **kwargs)
        Logs a message with level DEBUG on this logger. The msg is the message format string, and the args are the arguments which are merged into msg using the string formatting operator. (Note that this means that you can use keywords in the format string, together with a single dictionary argument.)
 
 
    info(msg, *args, **kwargs)
        在此記錄器上記錄 INFO 級別的消息。參數解釋同 debug()。
 
 
    warning(msg, *args, **kwargs)
        在此記錄器上記錄 WARNING 級別的消息。參數解釋同 debug()。
 
 
    error(msg, *args, **kwargs)
        在此記錄器上記錄 ERROR 級別的消息。參數解釋同 debug()。
 
 
    critical(msg, *args, **kwargs)
        在此記錄器上記錄 CRITICAL 級別的消息。參數解釋同 debug()。
 
 
    log(lvl, msg, *args, **kwargs)
        Logs a message with integer level lvl on this logger. The other arguments are interpreted as for debug().
 
 
    exception(msg, *args, **kwargs)
        在此記錄器上記錄 ERROR 級別的消息。參數解釋同 debug()。異常信息將添加到日誌消息中。僅應從異常處理程序中調用此方法。
 
 
    addFilter(filter)
        將指定的過濾器 filter 添加到此記錄器。
 
 
    removeFilter(filter)
        從此記錄器中刪除指定的處理程序 filter。
 
 
    filter(record)
        Applies this logger’s filters to the record and returns a true value if the record is to be processed. The filters are consulted in turn, until one of them returns a false value. If none of them return a false value, the record will be processed (passed to handlers). If one returns a false value, no further processing of the record occurs.
 
 
    addHandler(hdlr)
        將指定的處理程序 hdlr 添加到此記錄器。
 
 
    removeHandler(hdlr)
        從此記錄器中刪除指定的處理器 hdlr。
 
 
    findCaller(stack_info=False)
        查找調用源的文件名和行號,以 文件名,行號,函數名稱和堆棧信息 4元素元組的形式返回。堆棧信息將返回 None``除非 *stack_info* 爲 ``True。
 
 
    handle(record)
        通過將記錄傳遞給與此記錄器及其祖先關聯的所有處理器來處理(直到某個 propagate 值爲 false)。此方法用於從套接字接收的未序列化的以及在本地創建的記錄。使用 filter() 進行記錄程序級別過濾。
 
 
    makeRecord(name, lvl, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None)
        這是一種工廠方法,可以在子類中對其進行重寫以創建專門的 LogRecord 實例。
 
 
    hasHandlers()
        檢查此記錄器是否配置了任何處理器。通過在此記錄器及其記錄器層次結構中的父級中查找處理器完成此操作。如果找到處理器則返回 True,否則返回``False``。只要找到 “propagate” 屬性設置爲 false的記錄器,該方法就會停止搜索層次結構 —— 其將是最後一個檢查處理器是否存在的記錄器。
 
 

日誌級別

日誌記錄級別的數值在下表中給出。如果你想要定義自己的級別,並且需要它們具有相對於預定義級別的特定值,那麼這些內容可能是你感興趣的。如果你定義具有相同數值的級別,它將覆蓋預定義的值; 預定義的名稱丟失。
級別
數值
CRITICAL
50
ERROR
40
WARNING
30
INFO
20
DEBUG
10
NOTSET
0
 

處理器對象

Handler 有以下屬性和方法。注意不要直接實例化 Handler ;這個類用來派生其他更有用的子類。但是,子類的 __init__() 方法需要調用 Handler.__init__() 。
class logging.Handler
    __init__(level=NOTSET)
        初始化 Handler 實例時,需要設置它的級別,將過濾列表置爲空,並且創建鎖(通過 createLock() )來序列化對 I/O 的訪問。
 
 
    createLock()
        初始化一個線程鎖,用來序列化對底層的 I/O 功能的訪問,底層的 I/O 功能可能不是線程安全的。
 
 
    acquire()
        使用 createLock() 獲取線程鎖。
 
 
    release()
        使用 acquire() 來釋放線程鎖。
 
 
    setLevel(level)
        給處理器設置閾值爲 level 。日誌級別小於 level 將被忽略。創建處理器時,日誌級別被設置爲 NOTSET (所有的消息都會被處理)。
 
 
    setFormatter(fmt)
        將此處理器的 Formatter 設置爲 fmt。
 
 
    addFilter(filter)
        將指定的過濾器 filter 添加到此處理器。
 
 
    removeFilter(filter)
        從此處理器中刪除指定的過濾器 filter 。
 
 
    filter(record)
        Applies this handler’s filters to the record and returns a true value if the record is to be processed. 
        The filters are consulted in turn, until one of them returns a false value. If none of them return a false value, the record will be emitted. 
        If one returns a false value, the handler will not emit the record.
 
 
    flush()
        確保所有日誌記錄從緩存輸出。此版本不執行任何操作,並且應由子類實現。
 
 
    close()
        整理處理器使用的所有資源。此版本不輸出,但從內部處理器列表中刪除處理器,內部處理器在 shutdown() 被調用時關閉 。子類應確保從重寫的 close() 方法中調用此方法。
 
 
    handle(record)
        經已添加到處理器的過濾器過濾後,有條件地發出指定的日誌記錄。用獲取/釋放 I/O 線程鎖包裝記錄的實際發出行爲。
 
 
    handleError(record)
        調用 emit() 期間遇到異常時,應從處理器中調用此方法。如果模塊級屬性 raiseExceptions 是 False,則異常將被靜默忽略。這是大多數情況下日誌系統需要的 —— 大多數用戶不會關心日誌系統中的錯誤,他們對應用程序錯誤更感興趣。但是,你可以根據需要將其替換爲自定義處理器。指定的記錄是發生異常時正在處理的記錄。(raiseExceptions 的默認值是 True,因爲這在開發過程中是比較有用的)。
 
 
    format(record)
        如果設置了格式器則用其對記錄進行格式化。否則,使用模塊的默認格式器。
 
 
    emit(record)
        執行實際記錄給定日誌記錄所需的操作。這個版本應由子類實現,因此這裏直接引發 NotImplementedError 異常。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章