• 管理自带webserver日志
    • 问题
    • 解法

    管理自带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)