[英]Using logging.info instead of logger.info wrecks 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.