擅长:python、mysql、java
<p><code>logging.basicConfig()</code>是一种方便,它以非常简单的方式设置一些日志处理。如果您需要多一点,就不应该使用<code>basicConfig()</code>。这没什么大不了的,因为没什么大不了的。我们需要为两个流配置日志记录</p>
<pre><code>import logging, sys
fmt = logging.Formatter(BASIC_FORMAT)
hdlr_stderr = logging.StreamHandler(sys.stderr)
hdlr_stderr.setFormatter(fmt)
hdlr_stdout = logging.StreamHandler(sys.stdout)
hdlr_stdout.setFormatter(fmt)
root.addHandler(hdlr_stderr)
root.addHandler(hdlr_stdout)
root.setLevel(logging.DEBUG)
</code></pre>
<p>默认情况下,日志记录器记录他们接收到的所有消息;但最初,我们不想将任何消息记录到<code>sys.stdout</code>:</p>
^{pr2}$
<p>那么,上下文管理器可能看起来有点像:</p>
<pre><code>@contextlib.contextmanager
def redirect_stderr_logging(where):
hdlr_stderr.level = float('inf')
hdlr_stdout.level = logging.NOTSET
try:
yield where
finally:
hdlr_stderr.level = logging.NOTSET
hdlr_stdout.level = float('inf')
</code></pre>