[英]Not able to print custom log level on stream handlers using logging module in python3.6
以下是__init__.py
文件中的函數,這意味着這部分代碼始終在執行代碼時運行
import logging
def log_setup():
logging.TRACE = 5
logging.addLevelName(5, 'TRACE')
def trace(obj, message, *args, **kws):
obj.log(logging.TRACE, message, *args, **kws)
logging.Logger.trace = trace
logging.trace = trace
root = logging.getLogger("TEST")
root.setLevel(5)
ch = logging.StreamHandler()
ch.setFormatter(f)
ch.setLevel(5)
root.handlers = []
root.addHandler(ch)
我在其中一個庫說xyz.py中有以下代碼
import logging
log = logging.getLogger("TEST."+__name__)
if log.trace:
print("***ELLO***", log.getEffectiveLevel())
print("***ELLO***", log.isEnabledFor(logging.DEBUG))
print("***ELLO***", log.isEnabledFor(logging.TRACE))
log.trace("Hey Statement printed")
通過腳本調用時,無法打印log.trace。 有趣的是,對於log.isEnabledFor(logging.TRACE)始終返回False。
不知道我在這里想念的是什么
下面是輸出
***ELLO*** 10
***ELLO*** True
***ELLO*** False
除非您自己創建了自定義處理程序,否則python中沒有TRACE日志級別
以下是日志級別列表
您的代碼無法運行:例如,將其粘貼到源文件中,由於f
未定義,因此代碼將失敗。 注釋掉那條線,我可以毫無問題地運行它。 您確定在xyz
的代碼之前調用了log_setup()
嗎? 我的猜測是不是。 另外,線
root.handlers = []
不應該在那里-您不應該這樣做,因為handlers
是一個內部屬性,並不意味着您可以直接進行更改。 線
logging.trace = trace
日志模塊級別的便利函數不帶初始對象參數,並且具有諸如debug(msg, *args, **kwargs)
類的簽名,因此它也看起來是錯誤的。 大概您希望模塊級trace
功能具有類似的簽名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.