めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

pythonのloggingの詳細設定を行う

データ解析のステップが大きくなってくるとログファイルを出力しないとどこにエラーがが入ったかやバグのチェックが大変になってくるのでメモ。

利用するたびに設定を指定する

一瞬使いたい時。

import logging
LOG_OUTPUT = 'debug.log'

logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',
                                   level=logging.DEBUG,
                                   filename=LOG_OUTPUT)
logging.debug('debug_message')

.confにロギングの設定を指定する

複数の階層にまたがっている等複雑な時。

  • xxx.py(ログを撮りたいファイル)
import logging
logging.config.fileConfig('log.conf')
logger = logging.getLogger('Pipelinelog')
logger.debug('debug_message')
  • log.confの中身

ここでログの出力を指定する。

[loggers]
keys=root, Pipelinelog

[handlers]
keys=fileHandler

[formatters]
keys=logFormatter

[logger_root]
level=DEBUG
handlers=fileHandler

[logger_Pipelinelog]
level=DEBUG
handlers=fileHandler
qualname=Pipelinelog
propagate=0

[handler_fileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=logFormatter
args=('debug.log',)

[formatter_logFormatter]
format=%(asctime)s - %(levelname)s - %(message)s
datefmt=

詳細

[handler_fileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=logFormatter
args=('debug.log',)

がファイルハンドラ、ログを出力するファイルの詳細設定で formatter=以下にログ一行のフォーマットを指定する。 コマンドラインにもログを出力したい場合にはclass=StreamHandlerのハンドラを指定する。 このほかの.confの指定例は

Logging HOWTO — Python 2.7.x ドキュメント

を参照する。

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。