擅长:python、mysql、java
<p>查看<a href="http://docs.python.org/2/library/logging.html" rel="nofollow">logger</a>文档:</p>
<blockquote>
<p>Loggers are never instantiated directly, but always through the module-level function logging.getLogger(name). Multiple calls to getLogger() with the same name will always return a reference to the same Logger object.</p>
</blockquote>
<p>现在,您的构造函数正在调用以下代码:</p>
<pre><code>ch = logging.StreamHandler()
self.logger = logging.getLogger('SQLLogger')
self.logger.addHandler(ch)
</code></pre>
<p>注意,您不会为每个<code>SQLEngine</code>对象创建一个新的记录器,但总是获得对同一个记录器实例的引用。这意味着您总是将处理程序添加到同一个记录器中,因此在创建第二个对象之后,您的记录器有两个处理程序,每个处理程序都打印到屏幕上。在</p>
<p>我们只需要注册一个处理程序(例如在<code>SQLEngine</code>构造函数之外),或者为每个<code>SQLEngine</code>实例使用不同的名称调用<code>getLogger</code>。在</p>