今回は、Pythonでログ出力をする一般的な方法であるLoggingパッケージの使い方を解説します。
公式サイトのチュートリアルに則った内容となります。
Loggingの使い方
早速ですが、Pythonでコンソールにログ出力する簡単なコード例が以下となります。
import logging
# 1. ロガーの作成
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO) # 出力レベルを設定
# 2. ハンドラーを作成する
ch = logging.StreamHandler()
ch.setLevel(logging.INFO) # 出力レベルを設定
# 3. フォーマッタを作成する
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 4. ハンドラーにフォーマッターを設定する
ch.setFormatter(formatter)
# 5. ロガーにハンドラーを追加する
logger.addHandler(ch)
# ロガーのテスト
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
このコードを実行するとINFO以上のレベルのメッセージが表示されることが確認できます。
Loggingパッケージでログ出力するためには、以下の5つの工程が必要になります。
- ステップ1ロガーの作成
- ステップ2ハンドラーの作成
- ステップ3フォーマッタの作成
- ステップ4ハンドラーにフォーマッターを設定
- ステップ5ロガーにハンドラーを追加
ステップ1 : ロガーの作成
ログ出力をするためにまず、ロガーオブジェクトを作成します。
ロガーオブジェクトでは、ログメッセージの記録や、ログレベルに応じたフィルタリングなどを行います。
ステップ2 : ハンドラーの作成
ハンドラーでは、ログの出力先を振り分ける役割を担っています。
コンソールへの出力、ファイルへの出力、通信で他のサーバへ送信といったような様々な処理の実行が可能です。
ここでは利用しやすい便利なハンドラーの一覧を掲載しておきます。
詳細については公式サイトを確認してください。
ステップ3 : フォーマッタの作成
フォーマッタではログメッセージの形式を定義します。
時刻-メッセージの深刻度-メッセージの内容のような形式を設定する事ができます。
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
ここではフォーマットの一覧を掲載しておきます。
詳細については公式サイトを確認してください。
ステップ4 : ハンドラーにフォーマッタを設定
作成したフォーマッタをハンドラーに紐づけます。
ハンドラー単位で別のフォーマットを使用することができます。
ステップ5 : ロガーにハンドラーを追加
ハンドラーをロガーに紐づけます。
1つのロガーに複数のハンドラーを使用することも可能です。
以下の例では、ロガーの出力を2つ(標準出力とファイル出力)にしています。
from logging import getLogger
import logging
# 1. ロガーを取得する
logger = getLogger(__name__)
logger.setLevel(logging.INFO) # 出力レベルを設定
# 2. ハンドラーを作成する
ch = logging.StreamHandler() #ハンドラー1
ch.setLevel(logging.INFO) # 出力レベルを設定
fh = logging.FileHandler('sample.log') #ハンドラー2
fh.setLevel(logging.DEBUG) # 出力レベルを設定
# 3. フォーマッタを作成する
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 4. ハンドラーにフォーマッターを設定する
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# 5. ロガーにハンドラーを追加する
logger.addHandler(ch)
logger.addHandler(fh)
まとめ
Pythonでログ出力をする一般的な方法であるLoggingパッケージの使い方を解説しました。
Loggingパッケージでログ出力するためには、以下の5つの工程で実施可能です。
ログを出力することで、プログラムの不具合を見つけやすくなるのでぜひ使ってみてください。
コメント