【问题标题】:How can I list all available LogRecord attributes?如何列出所有可用的 LogRecord 属性?
【发布时间】:2020-05-12 23:28:45
【问题描述】:

官方文档提供了一个带有all available attributes for logging的表格。

反过来,这些属性可以在格式化程序中使用(例如,'[{asctime}] {levelname} [{threadName}] [{name}.{funcName}:{lineno}] {message}' 就是这样一种格式化程序)。

但是,我能否在运行时获得所有可用属性的列表,而不依赖于文档?

假设我的目标是在程序上生成一个格式化程序,其中包含独立于版本的所有属性。正如文档本身所指出的那样,processName 是在 3.1 中添加的,并且在它仍然是 3.0 时并未在其中列出,这意味着如果我的脚本使用硬编码的 3.0 属性,即使它正在运行,它也不会使用 processName一个 3.1^ 的解释器。

【问题讨论】:

    标签: python python-3.x logging metadata python-logging


    【解决方案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]
    

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 2018-11-14
      • 1970-01-01
      • 2021-12-13
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      相关资源
      最近更新 更多