Python Cherrypy访问日志轮换

时间:2009-10-21 15:33:15

标签: python cherrypy logging

如果我希望Cherrypy的访问日志只能达到固定大小,我将如何使用旋转日志文件?

我已经尝试http://www.cherrypy.org/wiki/Logging,这似乎过时了,或者信息丢失了。

4 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

  

我已经尝试了http://www.cherrypy.org/wiki/Logging了   已过期,或缺少信息。

尝试添加:

import logging
import logging.handlers
import cherrypy # you might have imported this already

而不是

log = app.log

也许试试

log = cherrypy.log

答案 2 :(得分:2)

Cherrypy使用标准Python日志记录模块进行日志记录。您需要将其更改为使用RotatingFileHandler。此处理程序将为您处理所有事情,包括在日志达到设定的最大大小时旋转日志。

答案 3 :(得分:2)

custom log handlers的CherryPy文档显示了这个例子。

以下是我在我的应用中使用的略微修改的版本:

import logging
from logging import handlers

def setup_logging():

    log = cherrypy.log

    # Remove the default FileHandlers if present.
    log.error_file = ""
    log.access_file = ""

    maxBytes = getattr(log, "rot_maxBytes", 10000000)
    backupCount = getattr(log, "rot_backupCount", 1000)

    # Make a new RotatingFileHandler for the error log.
    fname = getattr(log, "rot_error_file", "log\\error.log")
    h = handlers.RotatingFileHandler(fname, 'a', maxBytes, backupCount)
    h.setLevel(logging.DEBUG)
    h.setFormatter(cherrypy._cplogging.logfmt)
    log.error_log.addHandler(h)

    # Make a new RotatingFileHandler for the access log.
    fname = getattr(log, "rot_access_file", "log\\access.log")
    h = handlers.RotatingFileHandler(fname, 'a', maxBytes, backupCount)
    h.setLevel(logging.DEBUG)
    h.setFormatter(cherrypy._cplogging.logfmt)
    log.access_log.addHandler(h)

setup_logging()