■やること
logging.basicConfig()を使用して、「DEBUG」、「INFO」、「WARNING」、「ERROR」ログを出力する。
logging.basicConfig()は以下を設定する。
logging.basicConfig(filename='<ログファイル名>'
, level=<ログ出力レベル>
, format=<ログフォーマット>)
<ログ出力レベル>は以下の表のうち、「DEBUG」と「INFO」を使用して、違いを確認する。
※「ロギングレベル」より引用
レベル | 数値 |
---|---|
logging.NOTSET | 0 |
logging.DEBUG | 10 |
logging.INFO | 20 |
logging.WARNING | 30 |
logging.ERROR | 40 |
logging.CRITICAL | 50 |
<ログフォーマット>の項目は以下の通りとする。
日付:[ログレベル]:[モジュール名]:[ファンクション名]:メッセージ
項目 | 値 |
---|---|
日付(YYYY-MM-DD HH:MI:SS,FFF) | asctime |
ログレベル | levelname |
モジュール名 | module |
ファンクション名 | funcName |
メッセージ(任意) | message |
■サンプルコード:DEBUG
import logging
# ログ出力フォーマットを設定
# 日付:[ログレベル]:[モジュール名]:[ファンクション名]:メッセージ
FORMMATER = '%(asctime)s:[%(levelname)s]:[%(module)s]:[%(funcName)s]:%(message)s'
# ログ出力サンプル関数
def logging_sample_fnc():
# 処理開始
logging.info('start: logging_sample_fnc')
try:
data1 = 1
if data1 == 1:
# debugレベルでdata1を出力
logging.debug('data1 = %s', data1)
data2 = 0
if data2 != 1:
# warningレベルでdata2を出力
logging.warning('[different value] data2 = %s', data2)
# 強制的に例外へ
raise
# 例外処理
except :
# errorレベルで出力
logging.error('例外エラー')
finally:
# 処理終了
logging.info('end: logging_sample_fnc')
if __name__ == '__main__':
# DEBUGレベルでログ出力
logging.basicConfig(filename='level_debug.log', level=logging.DEBUG, format=FORMMATER)
logging_sample_fnc()
■実行結果:DEBUG
2023-09-10 10:09:01,837:[INFO]:[logging_sample]:[logging_sample_fnc]:start: logging_sample_fnc
2023-09-10 10:09:01,837:[DEBUG]:[logging_sample]:[logging_sample_fnc]:data1 = 1
2023-09-10 10:09:01,837:[WARNING]:[logging_sample]:[logging_sample_fnc]:[different value] data2 = 0
2023-09-10 10:09:01,837:[ERROR]:[logging_sample]:[logging_sample_fnc]:例外エラー
2023-09-10 10:09:01,837:[INFO]:[logging_sample]:[logging_sample_fnc]:end: logging_sample_fnc
■サンプルコード:INFO
logging.basicConfig()の[level]をINFOに変更。
import logging
# ログ出力フォーマットを設定
# 日付:[ログレベル]:[モジュール名]:[ファンクション名]:メッセージ
FORMMATER = '%(asctime)s:[%(levelname)s]:[%(module)s]:[%(funcName)s]:%(message)s'
# ログ出力サンプル関数
def logging_sample_fnc():
# 処理開始
logging.info('start: logging_sample_fnc')
try:
data1 = 1
if data1 == 1:
# debugレベルでdata1を出力
logging.debug('data1 = %s', data1)
data2 = 0
if data2 != 1:
# warningレベルでdata2を出力
logging.warning('[different value] data2 = %s', data2)
# 強制的に例外へ
raise
# 例外処理
except :
# errorレベルで出力
logging.error('例外エラー')
finally:
# 処理終了
logging.info('end: logging_sample_fnc')
if __name__ == '__main__':
# INFOレベルでログ出力
logging.basicConfig(filename='level_info.log', level=logging.INFO, format=FORMMATER)
logging_sample_fnc()
■実行結果:INFO
DEBUGレベルのログが出力されなくなる。
2023-09-10 10:09:14,789:[INFO]:[logging_sample]:[logging_sample_fnc]:start: logging_sample_fnc
2023-09-10 10:09:14,789:[WARNING]:[logging_sample]:[logging_sample_fnc]:[different value] data2 = 0
2023-09-10 10:09:14,789:[ERROR]:[logging_sample]:[logging_sample_fnc]:例外エラー
2023-09-10 10:09:14,789:[INFO]:[logging_sample]:[logging_sample_fnc]:end: logging_sample_fnc
コメント