データ解析のステップが大きくなってくるとログファイルを出力しないとどこにエラーがが入ったかやバグのチェックが大変になってくるのでメモ。
利用するたびに設定を指定する
一瞬使いたい時。
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 ドキュメント
を参照する。