こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonを用いてログを出力する方法が知りたい
- ログレベル・重要度に応じて柔軟にログ出力したい
ログとは
ログとは、アプリケーション利用状況やプログラムレベルでの実行記録を残すこと、またはその記録を指します。
ログの記録として「出力日時」「ログレベル」「ログ詳細メッセージ」の3つが主に記録されることが一般的です。何がどの順番で起こったかを理解するために、ログを取ることは非常に有効な手段と言えます。
【Python】loggingライブラリを用いたログ出力
Pythonのlogging
ライブラリを活用すると、容易にログを取ることが可能です。
ログ出力に際して、プログラム冒頭に記載するひな型コードおよびシンプルなログ出力コードを示します。実行してみましょう。
import logging
# ログ設定
logging.basicConfig(filename = "Log.txt", # ログファイル名
filemode = "w", # ファイル書込
level = logging.DEBUG, # ログレベル
format = " %(asctime)s - %(levelname)s - %(message)s " # ログ出力フォーマット
)
# ログ出力
logging.debug("プログラム開始")
# 出力イメージ
# 2022-12-07 09:03:46,872 - DEBUG - プログラム開始
テキストファイルにログを出力する場合
ログの出力先として「画面」または「テキストファイル」の2つが選択可能です。テキストファイル上にログ出力したい場合、logging.basicConfig()
メソッドに対して、filename
およびfilemode
の引数を指定します。
import logging
# ログ設定
logging.basicConfig(filename = "Log.txt", # ログファイル名
filemode = "w", # ファイル書込
level = logging.DEBUG, # ログレベル
format = " %(asctime)s - %(levelname)s - %(message)s " # ログ出力フォーマット
)
テキストファイルではなく、画面上にログを出力する場合、filename
およびfilemode
の引数を除外すれば良いです。
【Python】ログレベルに応じた様々なログを出力する
logging
ライブラリを用いると、ログメッセージの重要度に応じたログを出力が可能です。
ログレベル | 記述方法 | 重要度 | 概要 |
---|---|---|---|
DEBUG | logging.debug() | 低 | プログラム実行における詳細記録用 |
INFO | logging.info() | 中 | 各種イベントやプログラム要所での動作確認用 |
WARNING | logging.warning() | 中 | 警告メッセージ記録用 |
ERROR | logging.error() | 高 | エラー発現時の記録用 |
CRITICAL | logging.critical() | 最高 | プログラムの実行が中断するような 致命的なエラー発現時の記録用 |
ログレベルに応じたログ出力
上記のログレベルに応じたログ出力方法について言及します。以下のプログラムを実行してみましょう。
コード
import logging
# ログ設定
logging.basicConfig(filename = "Log.txt", # ログファイル名
filemode = "w", # ファイル書込
level = logging.DEBUG, # ログレベル
format = " %(asctime)s - %(levelname)s - %(message)s " # ログ出力フォーマット
)
# =================================================
# 以下ログ出力
# =================================================
# logging.debug() : 重要度(低) : 詳細記録用
logging.debug("プログラム実行開始")
# logging.info() : 重要度(中) : イベント記録用
logging.info("プログラムXXXが実行されました。")
# logging.warning() : 重要度(中) : 将来発現しうる潜在的な問題を指定
logging.warning("プログラムXXXにてエラー発現の可能性があります。")
# logging.error() : 重要度(高) : エラー記録
logging.error("プログラムXXXにてエラーが発生しました。")
# logging.critical() : 重要度(最高) : プログラム実行を中止する致命的なエラーを示唆
logging.critical("プログラムの実行が中断されました。")
出力イメージ
# 2022-12-07 09:31:18,616 - DEBUG - プログラム実行開始
# 2022-12-07 09:31:18,616 - INFO - プログラムXXXが実行されました。
# 2022-12-07 09:31:18,616 - WARNING - プログラムXXXにてエラー発現の可能性があります。
# 2022-12-07 09:31:18,617 - ERROR - プログラムXXXにてエラーが発生しました。
# 2022-12-07 09:31:18,617 - CRITICAL - プログラムの実行が中断されました。
【Python】ログ出力を無効化
プログラムのデバッグ完了後は、画面をログメッセージを出力したくないという要望があるかもしれません。
logging.disable()
関数を用いるとログ出力の無効化も可能です。
全てのログを無効化したい場合、logging.disable(logging.CRITICAL)
を追記します。
import logging
# ログ設定
logging.basicConfig(filename = "Log.txt", # ログファイル名
filemode = "w", # ファイル書込
level = logging.DEBUG, # ログレベル
format = " %(asctime)s - %(levelname)s - %(message)s " # ログ出力フォーマット
)
# ログ出力
logging.debug("このログは表示されます")
# ログ出力を無効にする
logging.disable(logging.CRITICAL)
# 以降のログは全て非表示になる
logging.debug("このログは表示されません")
logging.debug("このログは表示されません")
logging.debug("このログは表示されません")
【参考】Pythonを活用した様々なお役立ち情報
当サイトではPythonを活用した様々なお役立ち情報を配信しています。
Pythonでできること・仕事に応用
「Pythonで実現できることを知りたい」「Pythonスキルを仕事で活かしたい」方はこちら!
Python✖️AI・機械学習
Python活用の最大メリットの1つであるAI・機械学習について詳しく知りたい方はこちら!
Python✖️投資自動化(仮想通貨)
Pythonはフィンテックとの相性が良く、その中でも仮想通貨自動売買タスクは近年注目度の高い領域です。フィンテック・投資に興味がある方はこちら!
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら