擅长:python、mysql、java
<p>关于日志记录需要注意的一件事是,如果在发出日志事件时发生异常(无论出于什么原因),则通常会将异常吞并,并且不允许仅仅因为日志错误而导致应用程序关闭。(它取决于使用的处理程序和<code>logging.raiseExceptions</code>的值)。所以有几件事需要检查:</p>
<ul>
<li>日志消息的格式设置非常简单,可能只是使用%(message)s,直到找到问题为止。在</li>
<li>检查塔架没有关闭日志记录,也没有因为任何原因与处理人员发生冲突。您还没有发布日志初始化代码,所以我不确定您使用的是什么处理程序等。您可以打印<code>log.getEffectiveLevel()</code>,看看日志记录的详细程度是否已经被调低(不太可能是关键的,但您永远不知道)。在</li>
</ul>
<p>如果将print语句与log语句放在一起,它们是否按预期生成输出?在</p>
<p><strong>更新:</strong>我知道mod\wsgi和打印的限制,但这只适用于<code>sys.stdout</code>。你可以例如</p>
<pre><code>print >> sys.stderr, some_data
</code></pre>
<p>或者</p>
^{pr2}$
<p>没有任何问题。在</p>
<p>另外:您应该知道,调用<code>logging.config.fileConfig()</code>(这大概就是您所描述的配置的实现方式)<strong>会禁用任何现有的日志记录器,除非它们在配置文件中显式命名,或者是在配置文件中显式命名的记录器的后代。</strong>虽然这看起来很奇怪,这是因为一个配置旨在<strong>替换</strong>任何现有的配置,而不是扩充它;而且由于线程可能指向现有的记录器,所以它们被禁用而不是删除。您可以检查记录器的<code>disabled</code>属性,查看<code>fileConfig()</code>是否禁用了记录器,这可能是您的问题所在。在</p>