【发布时间】:2014-06-11 19:51:27
【问题描述】:
在 python 2.6(可能还有更高版本,但我现在只看 2.6)中,似乎日志记录模块的 _levelnames 映射是一个顶级对象,不属于任何类:
_levelNames = {
CRITICAL : 'CRITICAL',
ERROR : 'ERROR',
WARNING : 'WARNING',
INFO : 'INFO',
DEBUG : 'DEBUG',
NOTSET : 'NOTSET',
'CRITICAL' : CRITICAL,
'ERROR' : ERROR,
'WARN' : WARNING,
'WARNING' : WARNING,
'INFO' : INFO,
'DEBUG' : DEBUG,
'NOTSET' : NOTSET,
}
该模块提供了一种覆盖这些名称的方法:
def addLevelName(level, levelName):
"""
Associate 'levelName' with 'level'.
This is used when converting levels to text during message formatting.
"""
_acquireLock()
try: #unlikely to cause an exception, but you never know...
_levelNames[level] = levelName
_levelNames[levelName] = level
finally:
_releaseLock()
但这是在全球范围内。
我需要记录到 syslog,以便将 ERROR 日志消息标记为“MAJOR”,将 WARNING 日志消息标记为“MINOR”。
现在可以很容易地使用 addLevelName() 方法来更改名称,但同样,这是在全局基础上进行的。我希望我的系统日志处理程序使用 MAJOR 和 MINOR,但将 ERROR 和 WARNING 保留为程序日志。我绝对不必这样做,并且可以接受全局重命名,但我宁愿不这样做。我翻遍了源代码,找不到可以让我这样做的钩子。
我错过了什么吗?
【问题讨论】:
标签: python logging python-2.6