4

Cherrypyのアクセスログを固定サイズのみにしたい場合、ローテーションログファイルを使用するにはどうすればよいですか?

私はすでにhttp://www.cherrypy.org/wiki/Loggingを試しましたが、これは古くなっているように見えるか、情報が不足しています。

4

4 に答える 4

4

http://docs.python.org/library/logging.htmlを見てください。

おそらくRotatingFileHandlerを構成する必要があります

http://docs.python.org/library/logging.html#rotatingfilehandler

于 2009-10-21T15:35:47.550 に答える
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
于 2010-01-19T11:44:54.640 に答える
3

カスタムログハンドラーの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()
于 2014-11-17T15:11:52.507 に答える
2

Cherrypyは、標準のPythonロギングモジュールを使用してロギングを行います。RotatingFileHandlerを使用するには、これを変更する必要があります。このハンドラーは、設定された最大サイズに達したときにログをローテーションするなど、すべてを処理します。

于 2009-10-21T15:40:21.163 に答える