Python を書くようになって日が浅い。
ロギングの詳細マニュアル
https://docs.python.jp/3.6/library/logging.html
https://docs.python.jp/3.6/library/logging.config.html
https://docs.python.jp/3.6/library/logging.handlers.html
日付ローテーションの設定ソース
(フォーマットはいろいろポリシーあると思うが、サンプルとして)
例)logging.ini
[loggers] keys=root [handlers] keys=fileHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=fileHandler [handler_fileHandler] class=handlers.TimedRotatingFileHandler formatter=simpleFormatter args=('/var/log/test.log','D',1, 7,'utf-8') [formatter_simpleFormatter] format = %(asctime)s.%(msecs)03d %(levelname)5s [%(message)s] [%(funcName)s %(processName)s - %(threadName)s] datefmt = %Y/%m/%d %H:%M:%S
[loggers], [handlers], [formatters] セクションは必須で
この keys が指すセクションで、個々の設定を記述する。
TimedRotatingFileHandler に指定する パラメータ arg s は、マニュアルに書いてある以下に従う。
TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0
, encoding=None, delay=False, utc=False, atTime=None)
呼出し例
# -*- coding: UTF-8 -*- import logging.config logging.config.fileConfig("logging.ini") logger = logging.getLogger() userid = "aa123-03dd2" logger.debug("user id = %s" % userid)
ログファイル結果
2018/08/29 20:45:24.322 DEBUG [user id = aa123-03dd2] [<module> MainProcess - MainThread]
難点は、、、
タブ文字をフォーマットで指定する為の制御がない!
ミリ秒を出力するのに、%(msecs)03d と書く必要がある。