Python Cherrypy Access Log Вращение
Вопрос
Если я хочу, чтобы журнал доступа для Cherrypy получал только фиксированный размер, как мне использовать вращающиеся файлы журнала?
Я уже пробовал http://www.cherrypy.org/wiki/Logging, который устарел или отсутствует информация.
Другие советы
Я уже пробовал 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
Cherrypy ведет свою регистрацию, используя стандартный модуль регистрации Python. Вам нужно будет изменить его, чтобы использовать RotatingFileHandler . Этот обработчик позаботится обо всем за вас, включая поворот журнала, когда он достигнет установленного максимального размера.
Документация 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()