簡體   English   中英

使用非root記錄器獲取所有級別的事件

[英]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.

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