如何列出所有可用的 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]