こんにちは。
もう少し勉強していきたいなと思うものの、こればっかり一生懸命になっているとあんまりコードを書く手が進まなくなるので、ぼちぼち勉強して行こうと思っているのが、ログ出力(笑)
分析とかしていると、途中で学習が止まっていたり、思っていたのと違う挙動を実はしていたなんていうことがあって、それを回避するためにログとかも出力したいなぁと思うわけです。
○モデルの学習のログはライブラリに任せる
モデルの学習のログは、Tensorflowとかだと標準でTensorboardなんていう素晴らしい機能が使えるようになっていますし、学習の進捗とかも普通に標準で出力できるようにサポートしているものが多いと思います。
それはそういうライブラリに任せておけばいいとおもっていて、ここでは自分でチェックしたい時にどうするかみたいなのを書きます。
○とりあえずこれコピーしておけばいいんじゃね的なコード
ライブラリなどがおっきくなってきたらこうも行かないと思いますが、自分でデータ分析なコードを書くんだったらこれでいいんじゃねと思っています。
以下で、実行した時間とかメッセージとかが表示されます。使う時は、logger.debug('log message')
みたいな感じで使えます。
from logging import getLogger, StreamHandler, DEBUG, Formatter, FileHandler logger = getLogger(__name__) handler = StreamHandler() logger.setLevel(DEBUG) handler.setLevel(DEBUG) formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) fh = FileHandler(filename='log.txt') fh.setLevel(DEBUG) fh.setFormatter(formatter) logger.addHandler(fh)
以上。
○参考にしたサイト
上のコードは、以下のサイトの情報を元に自分用に書きました。先人たちの文章には感謝です!!
- Python logging 各種出力ハンドラーの使い方について - Symfoware
- 16.6. logging — Logging facility for Python — Python 3.6.4rc1 documentation
- ログ出力のための print と import logging はやめてほしい - Qiita
- Python Logging Best Practices ~ Pieces of Mind
- 16.8. logging.handlers — ロギングハンドラ — Python 3.6.3 ドキュメント
- Logging HOWTO — Python 3.6.3 ドキュメント
- pythonのloggingモジュールでログ出力をする時に付加的な情報を出力する方法 - Qiita