<p>如前所述,您可以使用记录器模块。您可以设置默认的日志记录级别(例如警告),并将所有类型的消息放入代码中,从调试到关键。简而言之,如果您将日志记录级别设置为警告,即使您的代码记录调试消息,它们也不会出现在文件(或stdout)中。这是因为日志模块只记录优先级高于或等于Warning(警告、错误和严重)的消息。在</p>
<p>作为一个简单的解释,请看以下代码:</p>
<pre><code>import logging
import logging.handlers as handlers
logger = logging.getLogger('myapp')
hdlr = logging.FileHandler('/tmp/myapp.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
logger.debug('debug!')
logger.info('info!')
logger.warning('warning!')
logger.error('error!')
logger.critical('critical!')
</code></pre>
<p>它会创建一个名为我的应用程序日志公司名称:</p>
^{pr2}$
<p>如果您担心文件大小,可以使用旋转日志,它将根据您的条件丢弃最旧的日志:</p>
<pre><code>import logging
import logging.handlers as handlers
logger = logging.getLogger('myapp')
hdlr = handlers.RotatingFileHandler('/tmp/log/myapp.log', maxBytes=100, backupCount=5)
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
for i in range(20):
logger.debug('debug%i!'%i)
logger.info('info%i!'%i)
logger.warning('warning%i!'%i)
logger.error('error%i!'%i)
logger.critical('critical%i!'%i)
</code></pre>
<p>在本例中,我使用了一个最大大小为100字节的日志文件(非常小,您应该提高它),备份计数为5。这意味着当一个日志达到100字节时,它将被“旋转”:一个新的(并且是空的)我的应用程序日志将被创造,旧的将成为我的应用程序日志.1。在下一轮我的应用程序日志.1将成为我的应用程序日志.2,在我的应用程序日志会有新的我的应用程序日志.1。它会重复,直到我们我的应用程序日志, 我的应用程序日志.1条,我的应用程序日志.2。。。我的应用程序日志.n(在本例中,限制为我的应用程序日志.5条)。当我们点击这个,并且需要旋转日志时我的应用程序日志.5文件将被丢弃。所以,大小限制为5*100字节。在</p>
<p>看看发生了什么:</p>
<pre><code>magun@~: ls /tmp/log/
myapp.log myapp.log.1 myapp.log.2 myapp.log.3 myapp.log.4 myapp.log.5
magun@~: cat /tmp/log/myapp.log
2010-11-05 12:33:52,369 ERROR: error19!
2010-11-05 12:33:52,376 CRITICAL: critical19!
magun@~: cat /tmp/log/myapp.log.1
2010-11-05 12:33:52,362 CRITICAL: critical18!
2010-11-05 12:33:52,369 WARNING: warning19!
magun@~: cat /tmp/log/myapp.log.2
2010-11-05 12:33:52,355 WARNING: warning18!
2010-11-05 12:33:52,362 ERROR: error18!
magun@~: cat /tmp/log/myapp.log.3
2010-11-05 12:33:52,348 ERROR: error17!
2010-11-05 12:33:52,355 CRITICAL: critical17!
magun@~: cat /tmp/log/myapp.log.4
2010-11-05 12:33:52,340 CRITICAL: critical16!
2010-11-05 12:33:52,348 WARNING: warning17!
magun@~: cat /tmp/log/myapp.log.5
2010-11-05 12:33:52,333 WARNING: warning16!
2010-11-05 12:33:52,340 ERROR: error16!
magun@~:
</code></pre>
<p>如您所见,我们丢失了许多日志(0-15),但最近的日志在那里,保留了用户的可用空间。别忘了自下而上阅读日志:)</p>