我有以下代码:为什么Logging会进入无限循环?
#!/usr/bin/env python
import logging
import sys
import copy
class Wrapper:
def write(self, s):
#sys.__stdout__.write(s)
loggy = logging.getLogger('foobar')
loggy.info(s)
def blah():
logger = logging.getLogger('foobar')
logger.setLevel(logging.DEBUG)
streamhandle = logging.StreamHandler(sys.stdout)
streamhandle.setFormatter(logging.Formatter('[%(message)s]'))
logger.addHandler(streamhandle)
sys.stdout = Wrapper()
sys.stderr = Wrapper()
if __name__ == '__main__':
blah()
logger = logging.getLogger('')
#print logger.handlers
#for handler in logger.handlers:
# print handler
fooy = logging.getLogger('foobar')
#print fooy.handlers
sys.stdout.write('i love you')
logging.log(logging.DEBUG, 'i love you')
此代码会导致蟒蛇无限递归循环中去,并输出实际上是令人难以置信的冷静:
[Error in sys.exitfunc:
]
[INFO:foobar:Error in sys.exitfunc:
]
[INFO:foobar:INFO:foobar:Error in sys.exitfunc:
]
[INFO:foobar:INFO:foobar:INFO:foobar:Error in sys.exitfunc:
]
[INFO:foobar:INFO:foobar:INFO:foobar:INFO:foobar:Error in sys.exitfunc:
]
[INFO:foobar:INFO:foobar:INFO:foobar:INFO:foobar:INFO:foobar:Error in sys.exitfunc:
这一直呈几何级数增长:)它相当但为什么会发生这种情况?
这是线性增长,而不是指数增长。 – nosklo 2009-06-10 18:17:01