mucchinのAndroid戦記

System.out、System.errのprintlnメソッドでもログは出る

スポンサーリンク

Androidは、JavaのSystem.out.println()等の標準出力では、ログを確認出来ないの?

出来ます。
Androidアプリでは、ログの出力というと、android.utilパッケージのLogクラスを利用する、というのが一般的かなと思います。
ただ、作りこみの最中や、デバッグ中に、「この変数はどんな値になってるのか?」なんてのを、ちょっと今だけ調べたいってだけなのに、いちいちandroid.util.Logをimportさせたりするのは面倒です。
しかも、android.util.Logクラスのログ出力メソッドは、第一引数にアプリケーションの名前などの、識別用のTag(タグ)を与えないといけません。
あくまで個人的にはですケド、正直いちいちめんどくさいです。
Javaでは、System.outやSystem.errなどの標準出力系のAPIを使って、ログを確認する事がよくあります。
例えば、Javaアプレットでも、System.outを使えば、ブラウザのJavaコンソールで見る事が出来ます。
Androidアプリでも一緒で、ちゃんとLog Catで確認できます。
以下のようにログが出力されます。
System.out、System.errのprintlnメソッドでもログは出る


開発中に、ちょろっとログを確認する程度なら、System.out.println()で充分ではないかなと思います。
android.util.Logは、万が一、アプリケーションを配布したあとの不具合の調査をしやすくする等の為に、公開して配布後もそのまま埋め込んでおくためのログとして使用するとよいかと思います。
android.util.Logは、ログのレベルを指定できるというところがミソです。
例えば、以下のようにしておくと、あとで何か問題があったときに調べやすいと思います。
・メソッドの入り口などに、情報レベルのログ(Log.i()で出力するログ)
・Exception発生時や、意図しないルーチンに入ったというログは、エラーレベルのログ(Log.e()で出力するログ)
そして、LogCatでログを出力するときに、レベルを「error」に指定しておけば、情報レベルのログは画面に表示されず、エラーレベルのログだけが表示されるようになるので、問題点だけが浮き彫りになって、ログが見やすくなります。


先ほどの画像の、赤枠で囲った部分で、表示するログのレベルを指定できます。
V・・・verbose(Log.v()で出力しているログ)
D・・・debug(Log.d()で出力しているログ)
I・・・info(Log.i()で出力しているログ)
W・・・warn(Log.w()で出力しているログ)
E・・・error(Log.e()で出力しているログ)


スポンサーリンク

URL :
TRACKBACK URL :

Leave a Reply

*
* (公開されません)

*

*

Return Top