2011年9月12日月曜日

Log

デバッグのためのログ出力はLogクラスのメソッドを使用します。

ログ出力には以下の種類があります。
ログレベルメソッド内容
ERRORe()エラーメッセージ
WARNw()警告メッセージ
INFOi()情報メッセージ
DEBUGd()デバッグメッセージ
VERBOSEv()詳細(冗長)メッセージ
例えば、アプリケーションが異常終了する場合はエラーメッセージ、処理は続けられるがおかしなデータである場合は警告メッセージ、端末情報は情報メッセージ、デバッグ用はデバッグメッセージ、どの処理が実行されたか細かく知りたいような場合は詳細メッセージ、などのように、状況や欲しい情報によってログレベルを使い分けます。


ログを出力する

それでは早速サンプルプログラムを作ってみましょう。ログレベルを変えることで出力結果がどのように変わるのかを確認することにします。

Androidプロジェクトの設定
プロジェクト名:LogTest
ビルドターゲット:Android 2.1-update1
アプリケーション名:LogTest
パッケージ名:jp.co.triware.samples.LogTest
アクティビティーの作成:LogTest
最小SDKバージョン:7
LogTest.java
package jp.co.triware.samples.LogTest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class LogTest extends Activity {
    private static final String TAG = "LogTest";
    private static final boolean LOG_ERROR   = true;
    private static final boolean LOG_WARN    = true;
    private static final boolean LOG_INFO    = true;
    private static final boolean LOG_DEBUG   = true;
    private static final boolean LOG_VERBOSE = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        if (LOG_ERROR)   Log.e(TAG, "ERROR");
        if (LOG_WARN)    Log.w(TAG, "WARN");
        if (LOG_INFO)    Log.i(TAG, "INFO");
        if (LOG_DEBUG)   Log.d(TAG, "DEBUG");
        if (LOG_VERBOSE) Log.v(TAG, "VERBOSE");
    }
}
各メソッドの第1引数はタグ、第2引数はメッセージです。Exceptionが発生したときには第3引数をセットすればそのログを出力できるのですが、それについては別の機会に説明することにします。

サンプルでは第2引数に直接文字列をセットしていますが、変数を使う場合にはそれがnullにならないように気をつける必要があります。nullを渡してしまうとログ出力をしたがためにアプリケーションが異常終了してしまいます。

また、サンプルでは、LOG_XXXにtrue/falseをセットすることで、デバッグ時に必要なログだけ出力できるようにしています。リリース時には警告メッセージとエラーメッセージは残してそれら以外は消しておくと良いでしょう。

実行結果
Eclipseで実行すると「デバッグ」パースペクティブや「DDMS」パースペクティブの「LogCat」ビューにログが出力されます。
ログメッセージは、ログレベルによって色が異なります。エラーは赤、警告は橙、情報は緑、デバッグは青、詳細は黒です。上の[V][D][I][W][E]のアイコンをクリックすると、表示するログを制限できます。
ログレベルログの色アイコンをクリックした時に表示されるログ
E (Error)エラー
W (Warn)エラー・警告
I (Info)エラー・警告・情報
D (Debug)エラー・警告・情報・デバッグ
V (Verbose)エラー・警告・情報・デバッグ・詳細

0 件のコメント:

コメントを投稿