2018年7月10日火曜日

Python3 で logging する

概要

Python3 標準の logging パッケージを使ったロギング方法を紹介します
いつも忘れるのでメモ

環境

  • macOS 10.13.5
  • Python 3.6.5

単純なロギング

logging だけを使っています
basicConfig という設定用のメソッドを使ってフォーマットなどを設定することができます

import logging

logging.basicConfig(
    level = logging.DEBUG,
    format = "[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s"
)

logging.debug("debug")
logging.info("info")
logging.warn("warn")

ただこれだと pip でインストールしたパッケージのログなども表示されてしまいます

StreamHandler を使ったロギング

getLogger + StreamHandler を使うと標準出力にスクリプト内のログのみを出力することができるようになります
フォーマットの設定は Formatter を使ってフォーマットを生成し StreamHandlersetFormatter を使って設定します

from logging import getLogger,DEBUG,StreamHandler,Formatter

logger = getLogger(__name__)
logger.setLevel(DEBUG)
formatter = Formatter("[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s")
sh = StreamHandler()
sh.setFormatter(formatter)
logger.addHandler(sh)

logger.debug("debug")
logger.info("info")
logger.warn("warn")

こちらを使うほうが良いと思います

最後に

どちらも Python3 標準の logging パッケージを使っているのでそのまま使えます
少し長くて複雑ですが下を使うことをオススメします

0 件のコメント:

コメントを投稿