2022.03.06  

【Python】ログ出力設定サンプル(コンソールとファイルに出力)

Python    

loggerによるシンプルなログ出力設定を記載します。
このサンプルでは、ファイルとコンソールのどちらにも出力を行うように設定しています。

コンソール出力が不要な場合は、stream_handlerがつく行を削除すればファイル出力のみを行うようになります。

setup_log.py
import os
from datetime import datetime
from logging import (StreamHandler, FileHandler,
                                     Formatter, basicConfig,
                                     INFO)  # 必要であればDEBUG, NOTSET, WARN, ERORR, CRITICALを設定)


def setup_log():
    '''ログ出力の行う準備を行う関数'''
    # このファイル(setup_log.py)がある箇所を絶対パスで取得
    BASE_PATH = os.path.abspath(os.path.dirname(__file__))
    # ログレベルの設定。DEBUG, INFO, NOTSET, WARN, ERORR, CRITICALの中からひとつを指定
    LOG_LEVEL = INFO

    '''ストリームハンドラの設定 コンソール出力が必要な場合に設定'''
    stream_handler = StreamHandler()
    # ログレベルの設定
    stream_handler.setLevel(LOG_LEVEL)
    # ログ出力フォーマットを設定
    stream_handler.setFormatter(Formatter("[%(asctime)s]:%(levelname)s:%(message)s"))

    '''ファイルハンドラの設定 ログファイルに関する設定を行う箇所'''
    file_handler = FileHandler(f"{BASE_PATH}/log_{datetime.now():%Y%m%d%H%M%S}.log")
    # ログレベルの設定
    stream_handler.setLevel(LOG_LEVEL)
    # ログ出力フォーマットを設定
    file_handler.setFormatter(Formatter("[%(asctime)s]:%(levelname)s:%(message)s"))

    '''ルートロガーの設定'''
    basicConfig(level=LOG_LEVEL, handlers=[stream_handler, file_handler])

setup_log.pyが上手く設定されているかチェックします。
下記では、適当なファイルhoge.pyを作成してsetup_log.exec()を呼び出しています。

また、LOG_LEVELをINFOに設定しているため、infoよりログレベルの低いdebugのログは出力されない想定です。

hoge.py
import setup_log
import logging

setup_log.exec()
logging.debug('hogehoge_debug')
logging.info('hogehoge_info')
logging.error('hogehoge_error')
実行結果(コンソール)
[2022-03-06 11:02:17,418]:INFO:hogehoge_info
[2022-03-06 11:02:17,420]:ERROR:hogehoge_error
実行結果(ファイル:log_20220306110217.log)
[2022-03-06 11:02:17,418]:INFO:hogehoge_info
[2022-03-06 11:02:17,420]:ERROR:hogehoge_error

想定通りログ出力が行えていることを確認できました。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信