Python,日志记录:使用自定义处理程序与字典配置?
问题描述:
这是关于Python 3.2(GNU/Linux x86_64)上的日志模块:是否可以使用字典配置设置自定义处理程序? 这是我想要的代码:Python,日志记录:使用自定义处理程序与字典配置?
import logging
import logging.config
class CustomHandler(logging.StreamHandler):
pass
logconfig = {
'version': 1,
'handlers': {
'console': {
'class': 'CustomHandler',
}
},
'loggers': {
'custom': {
'handlers': ['console'],
}
}
}
logging.config.dictConfig(logconfig)
logger = logging.getLogger('custom')
logger.error('Error message')
这当然是行不通的。这是输出:
Traceback (most recent call last):
File "/usr/lib/python3.2/logging/config.py", line 390, in resolve
found = self.importer(used)
ImportError: No module named CustomHandler
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.2/logging/config.py", line 569, in configure
handler = self.configure_handler(handlers[name])
File "/usr/lib/python3.2/logging/config.py", line 698, in configure_handler
klass = self.resolve(config.pop('class'))
File "/usr/lib/python3.2/logging/config.py", line 403, in resolve
raise v
File "/usr/lib/python3.2/logging/config.py", line 390, in resolve
found = self.importer(used)
ValueError: Cannot resolve 'CustomHandler': No module named CustomHandler
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./prova.py", line 91, in <module>
logging.config.dictConfig(logconfig)
File "/usr/lib/python3.2/logging/config.py", line 777, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib/python3.2/logging/config.py", line 574, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'console': Cannot resolve 'CustomHandler': No module named CustomHandler
有importer
方法在源中,我真的不明白...任何想法?
谢谢!
答
你需要告诉它在哪里可以找到CustomHandler
类。该字符串应该包含可以找到它的模块(也可能是包)。如果您直接运行此脚本,则可以使用__main__.CustomHandler
。否则,请使用your_module.CustomHandler
,将your_module
替换为包含该类的模块的名称。
天才!!!!!非常感谢你 – kynikos 2011-03-18 00:10:03
没问题,很高兴我能帮忙:) – dappawit 2011-03-18 00:42:34