Colab ではprint()を使用すればループ処理の実行途中の内容を出力できますが、ループ回数が多いと内容確認が大変です。本記事では出力結果をログファイルに出力する方法を紹介します。ログファイルとして出力することで内容確認が効率化できます。
目次
ログ出力
Google Colaboraotry については下記をご参考ください。
logconf の作成
まずはじめに logconf を作成します。
import os
_logconfpath = './log.conf'
logconfig = """
[loggers]
keys=root
[handlers]
keys=rotatinghandler, timedrotatinghandler
[formatters]
keys=_formatter
[logger_root]
level=DEBUG
handlers=rotatinghandler, timedrotatinghandler
[handler_rotatinghandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=_formatter
args=('./app.log', 'a', 1024*1024, 5, 'utf-8')
[handler_timedrotatinghandler]
class=handlers.TimedRotatingFileHandler
level=ERROR
formatter=_formatter
args=('./rotation.log', 'S', 1024*1024, 5, 'utf-8')
[formatter__formatter]
format=[%(process)d-%(thread)d]-%(asctime)s-[%(filename)s:%(lineno)d]-%(levelname)s-%(message)s
"""
f = open(_logconfpath, 'w')
f.write(logconfig)
f.close()
上記コードを実行することで Colab の 「/content」ディレクトリに log.conf が作成されます。
logger の初期化
下記コードを実行することでloggerが初期化されます。
import logging.config
logging.config.fileConfig(fname=_logconfpath)
_logger = logging.getLogger(__name__)
log 出力サンプル①
_logger.debug("debug")
_logger.info("info")
_logger.warning("warning")
_logger.error("error")
上記コードを実行することで Colab の 「/content」ディレクトリに app.log、rotaition.log が作成されます。
[58-140029969868672]-2022-04-29 13:03:42,128-[<ipython-input-3-7cc1b5ddc702>:1]-DEBUG-debug
[58-140029969868672]-2022-04-29 13:03:42,129-[<ipython-input-3-7cc1b5ddc702>:2]-INFO-info
[58-140029969868672]-2022-04-29 13:03:42,130-[<ipython-input-3-7cc1b5ddc702>:3]-WARNING-warning
[58-140029969868672]-2022-04-29 13:03:42,130-[<ipython-input-3-7cc1b5ddc702>:4]-ERROR-error
log 出力サンプル②
i = 0
for j in range(0,1000):
_logger.info(f"{j}回目の処理を開始します")
i = i + j
_logger.info(f" *** 計算結果は{i}です ***")
上記コードを実行結果は下記のようになります。
まとめ
本記事では、 本記事では、Google Colaboratory でログファイルを出力する方法を紹介しました。ご参考になりましたら twitter をフォローして SNS でシェアして頂ければ幸いです。
また、本記事で紹介した logging の応用事例についても合わせてご参考ください。
ご参考
ちなみに今回は、 動作確認環境として下記 Chromebook を使用しました。
14.0型フルHD × Core i3 × メモリ8GB を満たす数少ない端末です。
軽くて持ち運びしやすく開発に耐えうるスペックなのでおすすめです。
価格:70,510円 |