データ解析のステップが大きくなってくるとログファイルを出力しないとどこにエラーがが入ったかやバグのチェックが大変になってくるのでメモ。
利用するたびに設定を指定する
一瞬使いたい時。
import logging LOG_OUTPUT = 'debug.log' logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.DEBUG, filename=LOG_OUTPUT) logging.debug('debug_message')
.conf
にロギングの設定を指定する
複数の階層にまたがっている等複雑な時。
xxx.py
(ログを撮りたいファイル)
import logging logging.config.fileConfig('log.conf') logger = logging.getLogger('Pipelinelog') logger.debug('debug_message')
log.conf
の中身
ここでログの出力を指定する。
[loggers] keys=root, Pipelinelog [handlers] keys=fileHandler [formatters] keys=logFormatter [logger_root] level=DEBUG handlers=fileHandler [logger_Pipelinelog] level=DEBUG handlers=fileHandler qualname=Pipelinelog propagate=0 [handler_fileHandler] class=handlers.RotatingFileHandler level=DEBUG formatter=logFormatter args=('debug.log',) [formatter_logFormatter] format=%(asctime)s - %(levelname)s - %(message)s datefmt=
詳細
[handler_fileHandler] class=handlers.RotatingFileHandler level=DEBUG formatter=logFormatter args=('debug.log',)
がファイルハンドラ、ログを出力するファイルの詳細設定で formatter=
以下にログ一行のフォーマットを指定する。
コマンドラインにもログを出力したい場合にはclass=StreamHandler
のハンドラを指定する。
このほかの.conf
の指定例は
Logging HOWTO — Python 2.7.x ドキュメント
を参照する。