基本的なログ出力 logging

コードからすぐに使えるようにするには、

もっとも簡単な出力

設定なしでrootLoggerで出力する。標準出力に出力される。
defaultの出力レベルは、logging.WARNなので、infoやdebugは出力されない。

import logging

logging.debug("debug message")
logging.info("info message")
logging.warn("warn")
logging.error("error")
$ ./log-test.py 
WARNING:root:warn
ERROR:root:error

出力レベルの変更

logging.basicConfigでrootLoggerの簡単な設定ができる。

import logging

logging.basicConfig(level=logging.DEBUG)

logging.debug("debug message")
logging.info("info message")
logging.warn("warn message")
logging.error("error message")
$./log-test.py 
DEBUG:root:debug message
INFO:root:info message
WARNING:root:warn message
ERROR:root:error message

basicConfigでの設定は、rootLoggerの設定がない場合にのみ行われるので、最初に設定してあとから変更しないようなケースで利用する。

書式の設定

basicConfigでの設定時に出力書式を指定する。

...
logging.basicConfig(level=logging.DEBUG, 
    format="%(asctime)s %(levelname)-7s %(message)s")
...
$ ./log-test.py 
2012-04-20 09:17:34,857 DEBUG   debug message
2012-04-20 09:17:34,857 INFO    info message
2012-04-20 09:17:34,858 WARNING warn message
2012-04-20 09:17:34,858 ERROR   error message

書式文字列については以下を参照。

15.7.6. LogRecord 属性(原文)※抜粋

属性名 フォーマット 説明
asctime %(asctime)s LogRecord が生成された時刻を人間が読める書式で表したもの。デフォルトでは “2003-07-08 16:49:45,896” 形式
(コンマ以降の数字は時刻のミリ秒部分) です。
filename %(filename)s pathname のファイル名部分。
funcName %(funcName)s ロギングの呼び出しを含む関数の名前。
levelname %(levelname)s メッセージのための文字のロギングレベル
('DEBUG', 'INFO', 'WARNING',
'ERROR', 'CRITICAL')。
lineno %(lineno)d ロギングの呼び出しが発せられたソース行番号
(利用できる場合のみ)。
module %(module)s モジュール (filename の名前部分)。
msecs %(msecs)d LogRecord が生成された時刻のミリ秒部分。
message %(message)s msg % args として求められた、ログメッセージ。 Formatter.format() が呼び出されたときに設定されます。
name %(name)s ロギングに使われたロガーの名前。
pathname %(pathname)s ロギングの呼び出しが発せられたファイルの完全なパス名 (利用できる場合のみ)。
process %(process)d プロセス ID (利用可能な場合のみ)。
thread %(thread)d スレッド ID (利用可能な場合のみ)。
threadName %(threadName)s スレッド名 (利用可能な場合のみ)。
関連記事:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)