ロギングのPython標準ライブラリ
loggingモジュールは次のようなコンセプトから構成されている
・ログに保存したいメッセージ
・ランク付けのための優先順位レベルとそれに対応する関数(debug()、info()、warn()、error()、critical())
・モジュールとの主要な通信経路となるひとつ以上のロガーオブジェクト
・メッセージを端末、ファイル、データベース、その他の場所に送るハンドラ
・出力を作成するフォーマッタ
・入力に基づいて判断を下すフィルタ
ロギングの例
>>> import logging >>> logging.debug("Looks like rain") >>> logging.info("And hail") >>> logging.warn("Did I hear thinder?") <stdin>:1: DeprecationWarning: The 'warn' function is deprecated, use 'warning' instead WARNING:root:Did I hear thinder? >>> logging.warning("Did I hear thinder?") WARNING:root:Did I hear thinder? >>> logging.error("Was that lightning?") ERROR:root:Was that lightning? >>> logging.critical("Stop fencing and get inside!") CRITICAL:root:Stop fencing and get inside! >>>
ロガーオブジェクトを使ったロギングの例
>>> import logging >>> logging.basicConfig(level='DEBUG') >>> logger = logging.getLogger('bunyan') >>> logger.debug('Timber!') DEBUG:bunyan:Timber!
※ basicConfig()でデフォルトの表示レベルを指定できる。
デフォルトレベルはWARNING
もっとも低いレベルはDEBUGで、これを指定すると、すべてのレベルがログに表示される
ハンドラ(filename)を使ったロギングの例
>>> import logging >>> logging.basicConfig(level='DEBUG', filename='blue_ox.log') >>> logger = logging.getLogger('bunyan') >>> logger.debug("Where's my axe?") >>> logger.warning("I need my axe")
※ blue_ox.logにログが出力される(はず?)
ハンドラ(format)を使ったロギングの例
>>> import logging >>> fmt = '%(asctime)s %(levelname)s %(lineno)s %(message)s' >>> logging.basicConfig(level='DEBUG', format=fmt) >>> logger = logging.getLogger('bunyan') >>> logger.error("Where's my other plaid shirt?")
※ 指定した形式でログが出力される(はず?)