擅长:python、mysql、java
<p>很明显,当我们启动龙卷风时,“有人”正在初始化日志子系统。以下是<code>ioloop.py</code>中揭示奥秘的代码:</p>
<pre><code>def start(self):
if not logging.getLogger().handlers:
# The IOLoop catches and logs exceptions, so it's
# important that log output be visible. However, python's
# default behavior for non-root loggers (prior to python
# 3.2) is to print an unhelpful "no handlers could be
# found" message rather than the actual log entry, so we
# must explicitly configure logging if we've made it this
# far without anything.
logging.basicConfig()
</code></pre>
<p>调用<code>basicConfig</code>并配置默认的<code>stderr</code>处理程序。</p>
<p>因此,要为tonado访问设置正确的日志记录,您需要:</p>
<ol>
<li><p>将处理程序添加到<code>tornado.access</code>记录器:<code>logging.getLogger("tornado.access").addHandler(...)</code></p></li>
<li><p>禁用上述记录器的传播:<code>logging.getLogger("tornado.access").propagate = False</code>。否则消息将同时到达您的处理程序和<code>stderr</code></p></li>
</ol>