[英]Getting events of all levels using a non-root logger
我有一個非root記錄器並附加了一些處理程序,我希望記錄器將每個事件傳遞給他們,包括用戶定義級別的事件-因此,我做了一個log.setLevel(NOTSET)
, 它是最低級別( 0
) 。
但是,這使記錄器繼承了我不需要的父(根)記錄器的級別 ,因為將這些事件傳遞給我的處理程序應該是無條件的。
我想知道log.setLevel(1)
在這里是否是正確的選擇。 它似乎並不優雅,所以也許還有另一種方法可以做到這一點?
這是一個最小的示例-它不打印任何內容,這不是我想要的:
from logging import getLogger, StreamHandler, NOTSET
from sys import stdout
log= getLogger("mylogger")
handler= StreamHandler(stdout)
log.addHandler(handler)
log.setLevel(NOTSET)
log.debug("something")
我認為您正在以正確的方式進行操作:如果您只擔心處理內置級別,則可以使用log.setLevel(logging.DEBUG)
。 在這種情況下,您希望涵蓋每個可能的用戶定義級別,可以使用級別1來實現。我認為這並不優雅,它與log.setLevel(logging.DEBUG)
之間的唯一區別是沒有所使用級別的內置常量。 如果讓您感覺更好,則可以定義一個映射為1的常數以闡明您的工作方式:
from logging import getLogger, StreamHandler
from sys import stdout
ALL_LEVELS = 1
log= getLogger("mylogger")
handler= StreamHandler(stdout)
log.addHandler(handler)
log.setLevel(ALL_LEVELS)
log.debug("something")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.