■やること
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



コメント