擅长:python、mysql、java
<p>您可以使用定制的<code>Filter</code>,正如<code>unutbu</code>所说,也可以使用<code>LoggerAdapter</code>:</p>
<pre><code>import logging
logger = logging.LoggerAdapter(logging.getLogger(__name__), {'MYVAR': 'Jabberwocky'})
FORMAT = '%(MYVAR)s %(asctime)s - %(levelname)s - %(message)s'
logging.basicConfig(format=FORMAT, datefmt='%d/%m/%Y %H:%M:%S')
logger.warning("'Twas brillig, and the slithy toves")
</code></pre>
<p>它给予</p>
<p>Jabberwocky 2013年4月25日07:39:52-警告-“Twas brillig,和slithy toves</p>
<p>或者,每次通话都要传递信息:</p>
<pre><code>import logging
logger = logging.getLogger(__name__)
FORMAT = '%(MYVAR)s %(asctime)s - %(levelname)s - %(message)s'
logging.basicConfig(format=FORMAT, datefmt='%d/%m/%Y %H:%M:%S')
logger.warning("'Twas brillig, and the slithy toves", extra={'MYVAR': 'Jabberwocky'})
</code></pre>
<p>结果是一样的。</p>
<p>由于MYVAR实际上是常量,因此在您的情况下,<code>LoggerAdapter</code>方法需要的代码比<code>Filter</code>方法少。</p>