如何列出所有可用的 LogRecord 属性?
How can I list all available LogRecord attributes?
官方文档提供了一个table和all available attributes for logging。
这些属性又可以在格式化程序中使用(例如,'[{asctime}] {levelname} [{threadName}] [{name}.{funcName}:{lineno}] {message}'
就是这样一种格式化程序)。
但是,我能否在运行时获取所有可用属性的列表而不依赖于文档?
假设我的目标是在程序上生成一个格式化程序,其中包含与版本无关的所有属性。正如文档本身所指出的,processName
是在 3.1 中添加的,当它仍然是 3.0 时并没有在那里列出,这意味着如果我的脚本使用硬编码的 3.0 属性,它不会使用 processName
即使在 3.1^ 解释器中是 运行。
你可以实例化一个LogRecord看看。您可能想要过滤标准 __
属性。
import logging
rec = logging.LogRecord('',0,None,0,'',[],None) # create a minimal LogRecord
all_attributes = dir(rec)
filtered_attributes = [a for a in all_attributes if '__' not in a]
官方文档提供了一个table和all available attributes for logging。
这些属性又可以在格式化程序中使用(例如,'[{asctime}] {levelname} [{threadName}] [{name}.{funcName}:{lineno}] {message}'
就是这样一种格式化程序)。
但是,我能否在运行时获取所有可用属性的列表而不依赖于文档?
假设我的目标是在程序上生成一个格式化程序,其中包含与版本无关的所有属性。正如文档本身所指出的,processName
是在 3.1 中添加的,当它仍然是 3.0 时并没有在那里列出,这意味着如果我的脚本使用硬编码的 3.0 属性,它不会使用 processName
即使在 3.1^ 解释器中是 运行。
你可以实例化一个LogRecord看看。您可能想要过滤标准 __
属性。
import logging
rec = logging.LogRecord('',0,None,0,'',[],None) # create a minimal LogRecord
all_attributes = dir(rec)
filtered_attributes = [a for a in all_attributes if '__' not in a]