簡體   English   中英

日志記錄模塊:StreamHandler似乎未附加到記錄器

[英]logging module : StreamHandler does not seem to attach to logger

我正在學習Python的日志記錄模塊,無法弄清為什么無法記錄DEBUG和INFO消息。 這是代碼(python 2.7):

import logging

if __name__ == "__main__" :

    logger = logging.getLogger("test")
    c_handler = logging.StreamHandler()
    c_handler.setLevel(logging.DEBUG)

    logger.addHandler(c_handler)


    # test 
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

這導致這個輸出

This is a warning message
This is an error message
This is a critical message

我希望這個輸出

This is a debug message
This is an info message
This is a warning message
This is an error message
This is a critical message

看起來c_handler.setLevel(logging.DEBUG)無法正常工作,並且記錄器使用其默認設置。 默認情況下,它不會記錄DEBUG和INFO日志。

我究竟做錯了什么?

文檔中的此圖 (請參見下文)有助於說明日志記錄的工作方式。 注意頂部附近的兩個菱形。 “記錄器流程”菱形檢查“為調用級別啟用了記錄器”,而“處理程序流程”菱形檢查“為LogRecord級別啟用了處理器”。 這暗示着記錄器和處理程序都有記錄級別的事實。

要記錄DEBUG級別的記錄,請將記錄器的級別設置為DEBUG(以及將處理程序級別設置為DEBUG):

logger = logging.getLogger("test")
logger.setLevel(logging.DEBUG)    

在此處輸入圖片說明


import logging

if __name__ == "__main__" :

    logger = logging.getLogger("test")
    logger.setLevel(logging.DEBUG)    
    c_handler = logging.StreamHandler()
    c_handler.setLevel(logging.DEBUG)
    logger.addHandler(c_handler)

    # test 
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

版畫

This is a debug message
This is an info message
This is a warning message
This is an error message
This is a critical message

根據文檔

默認級別為WARNING,這意味着將僅跟蹤此級別及更高級別的事件,除非將日志記錄程序包配置為執行其他操作。

您可以在導入日志記錄包之后添加類似這樣的內容,它應該可以正常工作

logging.basicConfig(level=logging.DEBUG)

謝謝你們

使用

 logger.setLevel(logging.DEBUG)

弄明白了。

順便說一句,我也嘗試過

 logging.basicConfig(level=logging.DEBUG)

但這給出了這個輸出:

 This is a debug message
DEBUG:test:This is a debug message
This is an info message
INFO:test:This is an info message
This is a warning message
WARNING:test:This is a warning message
This is an error message
ERROR:test:This is an error message
This is a critical message
CRITICAL:test:This is a critical message

暫無
暫無

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

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