Logcatの使い方と見方
import android.util.Log;
Log.a(ここに自分の目印にするタグを書く, "出力する内容をカンマの右側に書く");
Log.e();
Log.w();
Log.i();
Log.d();
Log.v();
importしてあげる必要があります。その後に自分のログを表示したい箇所で上記のようにLog.d();のような感じで書きます。
AndroidStudioでは、Logを出力する際に使うのがLogcatというログ出力機能を使います。
そしてこのLogは5つの段階で重要さを表しています。
強い順に
Log.a();→Log.e();→Log.w();→Log.i();→Log.d();→Log.v();の順で重要度が決まっています。ですが、個人で開発をする際には明確なルールは決まっていなく、使い分けに悩みます。
あくまで、記事の情報をもとに判断した内容ですので、ご自身に合ったエラー出力や、各プロジェクトに沿ってログを使ってください。
Log.e();
Log.e:ERROR (致命的な問題)
eはerrorの略です。使いどきは、プログラムの構造上起こり得ないエラーが発生したときに使用します。例えば、以下のようなプログラムの時です。
if (!file.exists()) {
System.out.println("ファイルがないよ");
return;
}
try {
fileInputStrean = new FileInputStream(file);
} catch(FileNotFoundException e) {
Log.e(TAG, "ファイルが見つからないよ" + file, e);
}
ifで早期リターンしており、ファイルがなければプリントしてリターンしていくのですが、ファイルの存在確認を行った後に別のプログラムによって削除されたりすると、Errorが起こります。
このように自分、プログラムが起こり得ないと思っている事象に対してLog.e();を使います。
Log.w();
Log.w: WARN(警告)
wはWarnの略です。本来起こってはいけないが、場合によっては起こり得るエラーが発生した場合に使用します。
通常はtry catch構文のcatch文の中に記述されることが多くなります。
try {
fileInputStrean = new FileInputStream(file);
} catch(FileNotFoundException e) {
Log.w(TAG, "ファイルが見つからないよ" + file, e);
}
Log.i();
Log,i:INFO(情報)
iはinfomationのinfoです。このプロジェクトがライブラリ(Gitなどに挙げられている出来上がったプログラムの集合体)だったと仮定するなら、何が何だかわからない状態(ブラックボックス)で使っているユーザーにも情報を提供するためにLog.i();を使います。
例えば、ファイルのサイズを出力する場合などです。
int size = 0;
while ((buff = fileInputStream.read()) != -1) {
size++;
}
Log.i(TAG, "読み込んだサイズの大きさは" + size);
Log.d();
Log.d: DEBUG(デバック情報)。
dはDebugの略です。一番利用するログなのではないでしょうか。デバックの時に使うログなので、自分に動作環境がわかるように情報を提供します。
例えば、ボタンをクリックされたときに使うものです。
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Hello", "トースト表示前です。");
//Toastとは短くUI表示する機能のこと
Toast.makeText(getApplicationContext(),"ボタンが押されました。",
Toast.LENGTH_SHORT).show();
Log.d("Hello", "トースト表示後です。");
}
});
記事には、このようにしてLog .d(); を使うと書いてありましたが、 Androidプログラミング入門改訂2版にはLog.i();で書いてありました。
iとdは明確な差があまりないのかもしれません。
Log.v();
Log.v:VERVOCE(すべてのログ情報)。
一時的なデバッグに使用します。以下のようにループ中のデータを確認したいときに使用します。
while ((buff = fileInputStream.read()) != -1) {
Log.v(TAG, "buffの値は" + buff);
buff ++;
}
動作確認が終われば、コードごと消してしまうのが前提です。リリース前などにこのLog.v();を検索して使用しているところがないか削除忘れがないかみていきます。
他にもLogレベルにはこんな解釈も
- デバッグ(
debug
):ローカル環境で開発するときだけ使う情報 - インフォ(
info
):プログラムの状況や変数の内容、処理するデータ数など、後から挙動を把握しやすくするために残す情報 - ワーニング(
warning
):プログラムの処理は続いているが、何かしら良くないデータや通知すべきことについての情報 - エラー(
error
):プログラム上の処理が中断したり、停止した場合の情報
Logcatの出力情報を指定できる

画像のようにデフォルトではVervoseと真ん中あたりになっています。
クリックしてみると、どのレベルのログを出力するか確認することができます。都度、自分が表示したいログを出していきましょう。

Logcatが表示されない起動されないときの対象方法

ゴミ箱を押して、再読み込みボタン(緑色の折り返し矢印)を押す。
それでも改善しなければ、AndroisStudioの再起動をする。これで僕は治りました。
ちゃんと表示されるとこのようにログが出力されます。
