擅长:python、mysql、java
<p>我想出来了,谢谢帕科指引我正确的方向</p>
<p>原来,当调用<code>getLogger</code>时,会向其添加处理程序:</p>
<pre><code>>>> print(effectivehandlers(logger))
[<logging.StreamHandler object at 0x305ad90>, <logging.FileHandler object at 0x305ae10>]
>>> logging.getLogger(name) #the same logger
<logging.Logger object at 0x7fa08fb9b2d0>
>>> print(effectivehandlers(logger))
[<logging.StreamHandler object at 0x305ad90>, <logging.FileHandler object at 0x305ae10>, <logging.StreamHandler object at 0x305ad90>, <logging.FileHandler object at 0x305ae10>]
</code></pre>
<p>现在,子对象和父对象都有相同的处理程序。因此重复输出。</p>