BOP - The Future of Creative Engineers -


← ホームに戻る

Python Logging の基本

Pythonのloggingモジュールは、アプリケーションの実行中に発生するイベントを追跡するための柔軟なメカニズムを提供します。ログメッセージをさまざまな宛先(コンソール、ファイル、ネットワークなど)に出力したり、重要度に応じてフィルタリングしたりすることができます。

主な利点:

基本的な構成要素:

Loggerオブジェクトを通じて、以下の関数でログメッセージを出力します。

ログメッセージは、LoggerとHandlerに設定されたログレベルに基づいてフィルタリングされます。例えば、LoggerのレベルがINFOに設定されている場合、DEBUGレベルのメッセージは無視されます。

コマンド、オプション

Pythonのloggingモジュール自体に直接的なコマンドやオプションはありません。loggingの設定は主にPythonのコード内で行います。

ただし、loggingの設定方法にはいくつかの柔軟性があり、間接的にオプションのような振る舞いを実現できます。

設定方法の主な種類:

書式指定文字列の例 (format オプション):


'%(asctime)s - %(name)s - %(levelname)s - %(message)s'

使用例

以下に、基本的な使用例と、ファイルへの出力例を示します。


import logging

# ロギングの基本的な設定 (INFOレベル以上のメッセージを表示)
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# ロガーを取得 (現在のモジュール名がデフォルト)
logger = logging.getLogger(__name__)

logger.debug('これはデバッグメッセージです')
logger.info('これは通常の情報メッセージです')
logger.warning('これは警告メッセージです')
logger.error('これはエラーメッセージです')
logger.critical('これは重大なエラーメッセージです')
このコードを実行すると、INFOレベル以上のログメッセージがコンソールに出力されます。DEBUGレベルのメッセージは表示されません。

import logging

# ファイルへのロギング設定
logging.basicConfig(filename='app.log', level=logging.DEBUG,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# ロガーを取得
logger = logging.getLogger('my_app')

logger.debug('アプリケーションの起動')
try:
    result = 10 / 0
except ZeroDivisionError:
    logger.error('ゼロ除算エラーが発生しました', exc_info=True)
logger.info('処理が完了しました')

このコードを実行すると、DEBUGレベル以上のログメッセージが app.log ファイルに書き込まれます。exc_info=True を指定することで、例外に関する情報もログに出力できます。