2008年8月27日水曜日

Google App Engine (Python) でログを出力

1. ログを出力するための概略

Logging Events in Your Application - Google App Engine - Google Code の説明に従った。

概略は次の通り。

  1. loggin モジュールのインポート。
  2. ログを出力するレベルをアプリケーションにおいて設定する。
  3. loggin のメソッドを使って出力したいログの内容を書く。

 

2. logging モジュール

まず、logging モジュールをインポートする。

import logging

 

3. ログのレベルに対応したメソッド

logging のメソッドには、debug(), info(), error() などがあり、

14.5 logging -- Logging facility for Python によると、

Logged messages also have levels of importance associated with them. The default levels provided are DEBUG, INFO, WARNING, ERROR and CRITICAL.

(太字は引用者による)

ログとして出力するメッセージに「レベル」を設定できる。そして、それぞれのレベルに対応したメソッドが定義してある。

The methods are debug(), info(), warning(), error() and critical(), which mirror the default levels.

(同上より、太字は引用者による)

ログのレベルについては、以下のような段階がある。

ちなみに、この loggin はドキュメントに

New in version 2.3.

とあるように、Python のライブラリに含まれている。

 

4. ログを出力するレベルの設定

app.yaml の handlers で指定してある、script のmain 関数において、次のように記述する。

logging.getLogger().setLevel(logging.DEBUG)

上記のように設定すると、DEBUG レベル以上のログが出力されるようになる。

 

5. 出力された結果

Web アプリケーションを起動したときのコマンドラインにおいて、次のように表示された。

080827-003

ブラウザにおいては、アプリケーションの URL に

?debug

を追加すると、ログを表示するウィンドウが表示される。

080827-005

 

6. logging のみを試す

Google App Engine を使わずに、Python の一ファイルで、上記を真似てみる。

import logging

# ログの出力レベルを設定
logging.getLogger().setLevel(logging.INFO)

logging.error("hoge")
logging.warning("piyo")
logging.info("fuga")
logging.debug("hogehoge")

これを実行すると結果は、

ERROR:root:hoge
WARNING:root:piyo
INFO:root:fuga

ログを出力するレベルを INFO にしたので、それ以上のレベルがログとして表示されていない。 DEBUG は INFO よりも下なので表示されていない。

 

参考