【Python】ログ出力で、プログラムの実行結果を確認する方法が分かります。

スポンサーリンク
Python

この記事を読むと、プログラムの実行結果をログファイルに出力する方法が分かります。

プログラムがある程度、書けるようになると、print文で実行内容を確認するだけでは、プログラムの実効結果の確認に不便を感じるようになります。

  • 大量に処理結果が表示され、エラーの状況が分かりにくい。
  • エラーが複数発生した場合に、どんなエラーか記録するのに手間がかかる。
  • 処理した状況(件数や、処理時間)を後から確認したい。

 

そのため、ログファイルの出力方法がわかれば、上記のような課題を解決することができます。

 

スポンサーリンク

loggingパッケージでログファイルを出力する。


loggingパッケージは、はじめに、logging.basicConfigのパラメータを指定します。
ログファイル名、ログファイルの文字コード、ログ出力レベルを指定します。

 

ログ出力レベルでは、DEBUG、INFO、WARNING、ERRORを指定することで、ログファイルに出力されるプログラムを制御することができます。

サンプル1  

loggingパッケージを使用したプログラムサンプルは以下のとおりです。

import logging
logging.basicConfig(filename='sample.log', encoding='utf-8', level=logging.INFO)
                            # filename  = ログファイル名
                            # encoding = ログファイルの文字コード
                            # level        = ログ出力レベル
logging.debug( 'デバッグメッセージ'' )
logging.info( 'インフォメーションメッセージ' )
logging.warning( 'ワーニングメッセージ' )
logging.error( 'エラーメッセージ' )

sample.logの出力例

NFO:root:インフォメーションメッセージ
WARNING:root:ワーニングメッセージ
ERROR:root:エラーメッセージ

level=loggin.INFOとしたため、「デバッグメッセージ」がファイルに出力されていません。

ファイルが既に存在する場合は、追記されます。

 

サンプル2 

追記ではなく、毎回、新規にログファイルを出力する場合は、filemode=’w’を指定します。

import logging
logging.basicConfig(filename='sample.log', encoding='utf-8', level=logging.INFO,
filemode='w')
                            # filename  = ログファイル名
                            # encoding = ログファイルの文字コード
                            # level        = ログ出力レベル
                            # filemode  = 'w' ログファイルを上書き
logging.debug( 'デバッグメッセージ'' )
logging.info( 'インフォメーションメッセージ' )
logging.warning( 'ワーニングメッセージ' )
logging.error( 'エラーメッセージ' )

 

ログ出力レベルと実行されるプログラムとの関係を以下に示します。

     プログラム例
ログ出力レベル 
logging.debug(‘デバッグメッセージ’)logging.info(‘インフォメーションメッセージ’)logging.warning(‘ワーニングメッセージ’)logging.error(‘エラーメッセージ’)
level=logging.DEBUG
level=logging.INFO
level=logging.WARNING
level=logging.ERROR
logging.basicConfigのlevelパラメータ指定とファイル出力対象となるプログラム例 凡例:○:出力する。ー:出力しない。

サンプル3 

ログの出力形式を指定したい場合は、以下のように引数(%s)として指定できます。

import logging
logging.basicConfig(filename='sample.log', encoding='utf-8', level=logging.INFO)
                            # filename  = ログファイル名
                            # encoding = ログファイルの文字コード
                            # level        = ログ出力レベル
                            # filemode  = 'w' ログファイルを上書き
logging.info(' %s == %s', 'log', 'sample.log')

sample.logの出力例

INFO:root: log == sample.log

メッセージの形式を指定する。

logging.basicConfigで、ログファイルに出力されるメッセージの形式を変更することができます。

 

サンプル1

loggingパッケージを使用したプログラムサンプルは以下のとおりです。

%(asctime)s  :日付と時刻を表示する。
%(levelname)s :ログレベルを表示する。
%(message)s  :メッセージを表示する。

import logging
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',
filename='sample.log', encoding='utf-8', level=logging.INFO)
                            # filename  = ログファイル名
                            # encoding = ログファイルの文字コード
                            # level        = ログ出力レベル
                            # filemode  = 'w' ログファイルを上書き
logging.info(' %s == %s', 'log', 'sample.log')

sample.logの出力例

2022-05-01 12:34:56,001:INFO: log == sample.log

2022-05-01 12:34:56,001:INFO:」が、
logging.basicConfigのformat引数(%(asctime)s、%(levelname)s)で指定したメッセージ形式。

log == sample.log」が、
logging.infoの引数(‘ %s == %s’, ‘log’, ‘sample.log’)で指定したメッセージ形式。

 

タイトルとURLをコピーしました