<p>您可以使用<a href="http://docs.python.org/2/library/logging.html#loggeradapter-objects" rel="noreferrer">LoggerAdapter</a>,这样就不必在每次登录调用时传递额外的信息:</p>
<pre><code>import logging
extra = {'app_name':'Super App'}
logger = logging.getLogger(__name__)
syslog = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')
syslog.setFormatter(formatter)
logger.setLevel(logging.INFO)
logger.addHandler(syslog)
logger = logging.LoggerAdapter(logger, extra)
logger.info('The sky is so blue')
</code></pre>
<p>日志(类似)</p>
<pre><code>2013-07-09 17:39:33,596 Super App : The sky is so blue
</code></pre>
<hr/>
<p><a href="http://docs.python.org/2/howto/logging-cookbook.html#using-filters-to-impart-contextual-information" rel="noreferrer">Filters</a>也可用于添加上下文信息。</p>
<pre><code>import logging
class AppFilter(logging.Filter):
def filter(self, record):
record.app_name = 'Super App'
return True
logger = logging.getLogger(__name__)
logger.addFilter(AppFilter())
syslog = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')
syslog.setFormatter(formatter)
logger.setLevel(logging.INFO)
logger.addHandler(syslog)
logger.info('The sky is so blue')
</code></pre>
<p>生成类似的日志记录。</p>