Cherrypyのアクセスログを固定サイズのみにしたい場合、ローテーションログファイルを使用するにはどうすればよいですか?
私はすでにhttp://www.cherrypy.org/wiki/Loggingを試しましたが、これは古くなっているように見えるか、情報が不足しています。
Cherrypyのアクセスログを固定サイズのみにしたい場合、ローテーションログファイルを使用するにはどうすればよいですか?
私はすでにhttp://www.cherrypy.org/wiki/Loggingを試しましたが、これは古くなっているように見えるか、情報が不足しています。
http://docs.python.org/library/logging.htmlを見てください。
おそらくRotatingFileHandlerを構成する必要があります
http://docs.python.org/library/logging.html#rotatingfilehandler
私はすでに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ドキュメントは、まさにこの例を示しています。
これが私のアプリで使用するわずかに変更されたバージョンです:
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()
Cherrypyは、標準のPythonロギングモジュールを使用してロギングを行います。RotatingFileHandlerを使用するには、これを変更する必要があります。このハンドラーは、設定された最大サイズに達したときにログをローテーションするなど、すべてを処理します。