【问题标题】:How can I get formatter string from a logging.formatter object in Python?如何从 Python 中的 logging.formatter 对象获取格式化程序字符串?
【发布时间】:2016-07-16 17:19:01
【问题描述】:

您好,我想做一个日志管理器 gui。基本上我想获得记录器的树结构并在 pyqt gui 中显示它们的级别和格式化程序。如何从与处理程序对象关联的格式化程序中获取格式字符串?

例如:

import logging
_logger = logging.getLogger('myLogger')

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)s:%(levelname)s: %(message)s')
ch.setFormatter(formatter)
_logger.addHandler(ch)
_logger.propagate=0

现在我有了 _logger,如何从 logging.Formatter 对象中获取字符串 '%(name)s:%(levelname)s: %(message)s'?

>>> _logger.handlers[0]
<logging.StreamHandler object at 0x13807610>
>>> _logger.handlers[0].formatter
<logging.Formatter object at 0x13807690>

【问题讨论】:

    标签: python logging


    【解决方案1】:

    logging.Formatter 实例有一个_fmt 属性:

    >>> _logger.handlers[0].formatter
    <logging.Formatter object at 0x102c72fd0>
    >>> _logger.handlers[0].formatter._fmt
    '%(name)s:%(levelname)s: %(message)s'
    

    您始终可以在对象上使用dir()vars() 来查看哪些名称可用:

    >>> vars(_logger.handlers[0].formatter)
    {'datefmt': None, '_fmt': '%(name)s:%(levelname)s: %(message)s'}
    

    或者您可以只使用look at the source code(从module documentation 的顶部链接)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多