擅长:python、mysql、java
<p>@埃里克S</p>
<p>Eric S.的回答很好,但我通过实验了解到,无论日志级别设置为什么,这都会导致在新的调试级别记录的消息被打印出来。因此,如果将<code>9</code>设为新的级别号,如果调用<code>setLevel(50)</code>,则会错误地打印<strong>较低级别的</strong>消息。</p>
<blockquote>
<p>To prevent that from happening, you need another line inside the "debugv" function to check if the logging level in question is actually enabled.</p>
</blockquote>
<p>修复了检查日志记录级别是否已启用的示例:</p>
<pre><code>import logging
DEBUG_LEVELV_NUM = 9
logging.addLevelName(DEBUG_LEVELV_NUM, "DEBUGV")
def debugv(self, message, *args, **kws):
if self.isEnabledFor(DEBUG_LEVELV_NUM):
# Yes, logger takes its '*args' as 'args'.
self._log(DEBUG_LEVELV_NUM, message, args, **kws)
logging.Logger.debugv = debugv
</code></pre>
<p>如果您在Python 2.7的<code>logging.__init__.py</code>中查看<code>class Logger</code>的代码,这就是所有标准日志函数所做的工作(关键,.debug等)。</p>
<p>很明显我不能回复别人的回复,因为我的名声不好。。。如果埃里克看到这个,希望他能更新他的帖子。=)</p>