ファイルへのログ出力、Logger生成

basicConfigでファイルへ出力

basicConfigでfilename引数を指定。

logging.basicConfig(level=logging.DEBUG, 
    filename="test.log",
    format="%(asctime)s %(levelname)-7s %(message)s")

basicConfigで設定する場合は、logger全体への一括設定となり簡単ではあるが細かい設定はできない。

Loggerを設定してファイルへログ出力

basicConfigからのrootLoggerではなく、自分でLoggerを取得して詳細に設定する。

以下の例では、Loggerに2つのHandlerを設定して、1回の出力処理で2種類Handler(StreamとFile)への出力をする例。Handlerについては、こちらを参照。

logger(level=DEBUG) --+-- handler1(StreamHandler) 
                     +-- handler2(FileHandler)   level=WARN
import logging

logger = logging.getLogger("logger")    #logger名loggerを取得
logger.setLevel(logging.DEBUG)  #loggerとしてはDEBUGで

#handler1を作成
handler1 = logging.StreamHandler()
handler1.setFormatter(logging.Formatter("%(asctime)s %(levelname)8s %(message)s"))

#handler2を作成
handler2 = logging.FileHandler(filename="test.log")  #handler2はファイル出力
handler2.setLevel(logging.WARN)     #handler2はLevel.WARN以上
handler2.setFormatter(logging.Formatter("%(asctime)s %(levelname)8s %(message)s"))

#loggerに2つのハンドラを設定
logger.addHandler(handler1)
logger.addHandler(handler2)

#出力処理
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

実行結果

$ ./logger.py
2012-04-20 12:16:36,234    DEBUG debug message
2012-04-20 12:16:36,236     INFO info message
2012-04-20 12:16:36,236  WARNING warn message 
2012-04-20 12:16:36,236    ERROR error message

$ cat test.log
2017-06-13 10:36:11,231  WARNING warn message
2017-06-13 10:36:11,231    ERROR error message
関連記事:

コメントを残す

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

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