スポンサーリンク

【Python】loggingの基本的な使い方

記事内に広告が含まれています。

Python の logging モジュールを使うと、プログラムの動作を追跡するためのログを記録できます。以下は、logging モジュールの基本的な使い方について説明します。

基本的な使い方

まず、基本的な logging の設定とメッセージの記録方法を記載します。

import logging

# ログの基本設定
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

# ログメッセージを記録
logging.debug('これはデバッグメッセージです。')
logging.info('これは情報メッセージです。')
logging.warning('これは警告メッセージです。')
logging.error('これはエラーメッセージです。')
logging.critical('これは重大なエラーメッセージです。')

logging.basicConfig()を使ってロギングの基本設定を行うと、同じPythonアプリケーション内の他のモジュールにもその設定が反映されます。

basicConfig()は一度だけ設定されるため、後から別のモジュールで再度呼び出しても再設定されることはありません。

具体的には、logging.basicConfig()を呼び出すと、ルートロガーの設定が行われ、同じアプリケーション内の全てのロガーはこのルートロガーを継承します。

そのため、basicConfig()で設定したフォーマットやレベルは、他のモジュールで作成されたロガーにも反映されます。

ログレベル

logging モジュールでは、以下のログレベルがあります。

  • DEBUG
    詳細な情報。主に問題を診断するときに使います。
  • INFO
    一般的な情報。プログラムの正常な動作を示します。
  • WARNING
    警告。プログラムの動作に支障はないが、注意が必要な状況。
  • ERROR
    エラー。プログラムが一部の機能を実行できない状況。
  • CRITICAL
    重大なエラー。プログラムが継続できない場合。
ログファイルへの出力

ログをファイルに書き込むには、basicConfigfilename パラメータを使います。

logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
ロガーのカスタマイズ

より柔軟な設定を行いたい場合は、logging.getLogger を使ってロガーを作成し、ハンドラやフォーマッタを設定します。

# ロガーの作成
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# コンソールハンドラの作成
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# ファイルハンドラの作成
fh = logging.FileHandler('app.log')
fh.setLevel(logging.ERROR)

# フォーマッタの作成
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)

# ハンドラをロガーに追加
logger.addHandler(ch)
logger.addHandler(fh)

# ログメッセージを記録
logger.debug('これはデバッグメッセージです。')
logger.info('これは情報メッセージです。')
logger.warning('これは警告メッセージです。')
logger.error('これはエラーメッセージです。')
logger.critical('これは重大なエラーメッセージです。')

この設定により、コンソールにはすべてのログメッセージが出力され、ファイルにはエラーレベル以上のメッセージが記録されます。

ハンドラの種類

logging には、他にもさまざまなハンドラがあります。

  • StreamHandler
    コンソールなどのストリームにログを出力します。
  • FileHandler
    ファイルにログを出力します。
  • RotatingFileHandler
    サイズに応じてログファイルをローテーションします。
  • TimedRotatingFileHandler
    時間に応じてログファイルをローテーションします。
  • SMTPHandler
    ログメッセージをメールで送信します。

これらを組み合わせることで、柔軟にログを管理することができます。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました