Python logging モジュールで実行ログを出力しながら Excel ファイルを自動生成する方法

Python スクリプトを運用環境へ導入する際、処理の進捗や例外発生個所をログへ記録しておくと、あとから原因を特定しやすくなります。本記事では logging モジュールを使い、Excel ブックを複数作成するスクリプトに情報レベルのログを組み込む手順を解説いたします。


目次

動作環境

項目内容
OSWindows / macOS / Linux
Python3.9 以上
ライブラリopenpyxl (pip install openpyxl)

サンプルスクリプト

import logging
import sys
from openpyxl import Workbook

# 1. ログ設定
logging.basicConfig(
    filename='generate_reports.log',
    level=logging.INFO,
    format='%(asctime)s  [%(levelname)s]  %(message)s'
)

logging.info('処理を開始しました')

try:
    # 2. 生成するブック数をコマンドライン引数から取得
    report_count = int(sys.argv[1])
    
    for idx in range(report_count):
        # 3. Excel ブック作成
        new_wb = Workbook()
        summary_ws = new_wb.active
        summary_ws.title = 'Summary'
        
        # 4. ファイル名を動的に決定
        file_name = f'report_{idx + 1}.xlsx'
        new_wb.save(file_name)
        
        # 5. 成功ログ
        logging.info('ブックを作成しました: %s', file_name)

except Exception:
    # 6. 例外発生時はスタックトレースを含めて出力
    logging.exception('予期せぬ例外が発生しました')

finally:
    logging.info('処理が終了しました')

コード解説

処理内容
logging.basicConfig出力ファイル名・レベル・フォーマットを一括設定します。%(asctime)s で日時を付加し、調査時の手掛かりを増やします。
report_count = int(sys.argv[1])ブック数を外部パラメータ化し、汎用性を高めています。
logging.info()通常進行中の情報を記録します。大量に記録する場合は DEBUG レベルへ下げると運用しやすくなります。
logging.exception()except 節で使用すると、例外メッセージとスタックトレースをまとめてログへ出力できます。
finally:正常終了・異常終了のどちらでも実行されるため、終了ログを確実に残せます。

ログレベルの活用方法

メソッド主な用途出力例
logging.debug()詳細な変数値やループの進捗を確認したいとき開発時やテスト環境
logging.info()通常の処理結果や件数の記録本番での定常ログ
logging.warning()想定外だが処理続行可能な事象存在しないファイルをスキップ
logging.error()処理を一部スキップしたが継続可能なエラーファイル保存に失敗
logging.critical()システム停止レベルの重大エラーデータベース接続不可

応用アイデア

ニーズ実装ヒント
ログをコンソールにも出力logging.StreamHandler() を追加し、ファイルと画面の両方へ同時出力
日ごとにログファイルを分割logging.handlers.TimedRotatingFileHandler で自動ローテーション
JSON 形式でログを保存json-log-formatter ライブラリを利用し、解析ツールへ取り込みやすくする

まとめ

logging モジュールを取り入れることで、処理開始・成功・例外・終了 の各ポイントを可視化でき、障害調査や保守作業が格段に効率化します。Excel ファイル生成以外のバッチ処理でも同様に活用できますので、ぜひ導入をご検討ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次