【发布时间】:2012-02-09 14:01:31
【问题描述】:
我有以下日志记录类,当在代码中分配为格式化程序时,它可以正常工作。它通过在要记录的消息的开头添加一个字符串来扩展现有的格式化程序,以帮助显示消息的重要性。 (我不只是在格式字符串中使用%(levelname)s,因为我不想显示 DEBUG 或 INFO 前缀。)
class PrependErrorLevelFormatter(logging.Formatter):
def __init__(self, default):
self._default_formatter = default
def format(self, record):
if record.levelno == logging.WARNING:
record.msg = "[WARNING] " + record.msg
elif record.levelno == logging.ERROR:
record.msg = "[ERROR] " + record.msg
elif record.levelno == logging.CRITICAL:
record.msg = "[CRITICAL] " + record.msg
return self._default_formatter.format(record)
现在我希望能够通过 logging.config.fileConfig() 加载的配置文件来分配它。我试过这样的语法:
[formatter_PrependErrorLevelFormatter]
format=%(asctime)s %(message)s
datefmt=%X
class=PrependErrorLevelFormatter
不幸的是,我在解决这个类时遇到了错误:
File "C:\Python27\lib\logging\config.py", line 70, in fileConfig
formatters = _create_formatters(cp)
File "C:\Python27\lib\logging\config.py", line 127, in _create_formatters
c = _resolve(class_name)
File "C:\Python27\lib\logging\config.py", line 88, in _resolve
found = __import__(used)
ImportError: No module named PrependErrorLevelFormatter
我尝试在类名前加上它所在模块的名称,但得到了同样的错误。即使它可以解析类,由于我需要提供额外的默认格式化程序参数,它也可能无法工作。
如何使用 logging.config 系统达到我想要的结果?
【问题讨论】:
-
您可以在格式定义中使用
%(levelname)s(docs.python.org/library/logging.html#logrecord-attributes)。 -
我在第一段中对此进行了评论。
-
那么,您的问题现在回答了吗?
-
是的,对不起 - 我的意思是点击回答和点赞!感谢您的帮助。
标签: python logging python-2.7