Python 日志处理程序如何成为str?
我有一个记录器,它在脚本开始时正常工作,然后在中间中断。看起来它的处理程序被str覆盖了,但我不知道在哪里 在脚本的开始,我将打印处理程序及其级别。以下代码:Python 日志处理程序如何成为str?,python,logging,handler,freebase,Python,Logging,Handler,Freebase,我有一个记录器,它在脚本开始时正常工作,然后在中间中断。看起来它的处理程序被str覆盖了,但我不知道在哪里 在脚本的开始,我将打印处理程序及其级别。以下代码: print 'Array of handlers', logger.handlers for h in logger.handlers: print 'Handler', h print 'Handler level', h.level 产生以下结果: Array of handlers [<
print 'Array of handlers', logger.handlers
for h in logger.handlers:
print 'Handler', h
print 'Handler level', h.level
产生以下结果:
Array of handlers [<logging.FileHandler instance at 0x19ef320>]
Handler <logging.FileHandler instance at 0x19ef320>
Handler level 0
在开始设置处理程序之后(这很好),我不会添加其他处理程序或以任何方式更改现有的处理程序。我在logger上调用的唯一命令是logger.info('event to log')
什么会以这种方式改变记录器的处理程序 字符串的内容可能会为您提供一条线索,说明它是如何出错的,以及出错的原因 我建议把
print(repr(self.log.handlers))
就在您呼叫info
之前:
self.log.info('%s %s%s%s', method, url, formstr, headerstr)
如果处理程序是basestring的一个实例,那么在log对象上重写setattr以打印stacktrace非常方便的命令-它能够引导我直接找到它。谢谢!
print(repr(self.log.handlers))
self.log.info('%s %s%s%s', method, url, formstr, headerstr)