サンプルコード
python
1# これがmain.pyです 2import logging 3from logging import getLogger, StreamHandler, FileHandler, Formatter 4 5# -------------------------------------------------- 6# log関連の宣言 7# -------------------------------------------------- 8# loggerオブジェクトの宣言 9logger = logging.getLogger(__name__) 10# loggerのログレベル設定(ハンドラに渡すエラーメッセージのレベル) 11logger.setLevel(logging.INFO) 12# logのフォーマット 13handler_format = Formatter('%(asctime)s %(levelname)-8s [%(module)s#%(funcName)s %(lineno)d] %(message)s') 14 15# ---- 標準出力のhandler ---- 16# コンソール用のhandlerの生成 17stream_handler = StreamHandler() 18# handlerのログレベル設定(ハンドラが出力するエラーメッセージのレベル) 19stream_handler.setLevel(logging.INFO) 20# ログ出力フォーマット設定 21stream_handler.setFormatter(handler_format) 22 23# ---- ログファイル出力のhandler ---- 24# ログファイル用のhandlerの生成 25file_handler = FileHandler('error.log', encoding='utf-8') 26# handlerのログレベル設定(ハンドラが出力するエラーメッセージのレベル) 27file_handler.setLevel(logging.WARNING) 28# ログ出力フォーマット設定 29file_handler.setFormatter(handler_format) 30 31# ---loggerにhandlerをセット--- 32# 標準出力のhandlerをセット 33logger.addHandler(stream_handler) 34# ログファイル出力のhandlerをセット 35logger.addHandler(file_handler) 36 37# mainの開始ログをコンソールに表示 38logger.info("開始") 39logger.error("エラー")
python
1# こちらがtest.pyです 2import logging 3 4class Test(): 5 def __init__(self): 6 # ロガーを取得する 7 self.logger = logging.getLogger(__name__) 8 9 def log_write(): 10 # ログ出力 11 self.logger.debug('DEBUGレベルのメッセージです') 12 self.logger.info('INFOレベルのメッセージです') 13 self.logger.warning('WARNINGレベルのメッセージです') 14 self.logger.error('ERRORレベルのメッセージです') 15 self.logger.critical('CRITICALレベルのメッセージです')
terminal
12021-11-17 18:08:57,448 INFO [main#<module> 47] 開始 22021-11-17 18:08:57,448 ERROR [main#<module> 48] エラー 3WARNINGレベルのメッセージです 4ERRORレベルのメッセージです 5CRITICALレベルのメッセージです 62021-11-17 18:09:23,046 INFO [main#<module> 105] 終了
log
1(これがerror.logです) 22021-11-17 18:08:57,448 ERROR [main#<module> 48] エラー
実現したいこと
・test.pyで記入したlogがターミナルに表示されましたが、フォーマットが適用されません。
2021-11-17 18:08:57,448 INFO [main#<module> 47] 開始 2021-11-17 18:08:57,448 ERROR [main#<module> 48] エラー 2021-11-17 18:08:57,448 WARNING [test#<module> 47] WARNINGレベルのメッセージです 2021-11-17 18:08:57,448 ERROR [test#<module> 48] ERRORレベルのメッセージです 2021-11-17 18:08:57,448 CRITICAL [test#<module> 49] CRITICALレベルのメッセージです 2021-11-17 18:09:23,046 INFO [main#<module> 105] 終了
上記のようにターミナルに表示されることが理想です。
・error.logにもフォーマットが適用された状態でtest.pyでのlogを表示させたいです。
2021-11-17 18:08:57,448 ERROR [main#<module> 48] エラー 2021-11-17 18:08:57,448 WARNING [test#<module> 47] WARNINGレベルのメッセージです 2021-11-17 18:08:57,448 ERROR [test#<module> 48] ERRORレベルのメッセージです 2021-11-17 18:08:57,448 CRITICAL [test#<module> 49] CRITICALレベルのメッセージです
上記のようにerror.logに表示されることが理想です。
最後に
初歩的な質問で申し訳ありません。
しかし、自分なりに調べても出てこなかったため、お力を貸して頂けると幸いです。
何か不足している情報があれば遠慮なくお申し付けください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー