管理自带webserver日志

问题

如何操作web.py自带的webserver的日志?

解法

我们可以用wsgilog来操作内置的webserver的日志,并做其为中间件加到应用中。

如下,写一个Log类继承wsgilog.WsgiLog,在init中把参数传给基类,如这个例子

  1. import sys, logging
  2. from wsgilog import WsgiLog, LogIO
  3. import config
  4. class Log(WsgiLog):
  5. def __init__(self, application):
  6. WsgiLog.__init__(
  7. self,
  8. application,
  9. logformat = '%(message)s',
  10. tofile = True,
  11. file = config.log_file,
  12. interval = config.log_interval,
  13. backups = config.log_backups
  14. )
  15. sys.stdout = LogIO(self.logger, logging.INFO)
  16. sys.stderr = LogIO(self.logger, logging.ERROR)

接下来,当应用运行时,传递一个引用给上例中的Log类即可(假设上面代码是’mylog’模块的一部分,代码如下):

  1. from mylog import Log
  2. application = web.application(urls, globals())
  3. application.run(Log)