ログからエラーの発生場所を特定しやすくするために、ファイル名、行番号、関数名を含むフォーマットを設定します。以下の例では、Formatter
を使ってこれらの情報を追加しています。
from logging import getLogger, StreamHandler, FileHandler, DEBUG, Formatter
# loggerの作成
logger = getLogger(__name__)
logger.setLevel(DEBUG)
logger.propagate = False
# 詳細なフォーマットを設定
formatter = Formatter('%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s')
# コンソール用ハンドラー (StreamHandler)
console_handler = StreamHandler()
console_handler.setLevel(DEBUG)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
# ############## ファイル用ハンドラー (FileHandler) ##############
# 必要に応じて削除してください
file_handler = FileHandler('app.log', encoding='utf-8') # ログファイル名を'app.log'に設定
file_handler.setLevel(DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
if __name__ == "__main__":
# 実際にログを出力してみる
def example_function():
logger.error('エラーメッセージを出力')
example_function()
コメント