pythonログモジュール

1443 ワード

現在、serverを起動し、毎日のアクセス状況を記録し、資料を調べ、pythonのloggingモジュールで実現する必要があります.
具体的には、TimedRotatingFileHandlerというファイルプロセッサを使用します.コードは次のとおりです.
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

log_path = "./log/run.log"
fh = logging.handlers.TimedRotatingFileHandler(filename=log_path, when='midnight', backupCount=5)
fh.suffix = "%Y-%m-%d"
fh.setLevel(logging.DEBUG)

fmt = "%(asctime)-15s %(filename)s:%(lineno)d %(levelname)s %(message)s"
datefmt = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(fmt, datefmt)

fh.setFormatter(formatter)
logger.addHandler(fh)

一般的にモジュール名でloggerを取得すると、上位モジュールの設定を継承できる階層関係があります.
TimedRotatingFileHandler()の最初のパラメータfilenameはログパスを設定します.whenは循環ログの更新時間を設定し、一般的にmidnightに設定したほうがいい.すなわち、毎日午前0時に更新する.ネット上では、他の値を設定すると穴があり、時間的に一致しないという.bacupCountサイクル内のファイル数を設定します.
上記のコードの設定により、実行後にlogディレクトリの下にログファイルrunが作成する.log、当日発生したログはこのファイルに出力され、未明になるとこのファイルは昨日の日付のファイルになります.backupCountは5に設定されているため、最後のlogディレクトリでは常に6つのファイルが保持されます.
run.log.2017-06-01
run.log.2017-06-02
run.log.2017-06-03
run.log.2017-06-04
run.log.2017-06-05
run.log

他にも多くのログプロセッサがあり、用途に応じて設定できます.
また、ログモジュールは、マルチスレッド、マルチモジュール、フィルタの追加、jsonやyamlファイルから構成を読み取るなどの技術点にも関与し、さらに深く学ぶ必要があります.
その他の参考:
  • http://python.jobbole.com/81666/
  • http://www.jianshu.com/p/feb86c06c4f4
  • https://zhuanlan.zhihu.com/p/21476174