Android モニターには、デバッグメッセージを表示するlogcat モニターが含まれています。 logcat モニターでは、ガーベッジコレクションが発生した時などのシステムメッセージだけではなく、 Logクラスを使ってアプリに追加したメッセージも表示します。 これはリアルタイムでメッセージを表示し、古いメッセージを閲覧できるように履歴も保持します。
知りたい情報だけを表示するには、フィルターを作成したり、メッセージ内の表示される情報量を変更したり、優先度レベルを設定したり、アプリコードによって作成されたメッセージのみを表示したり、ログを検索したりできます。 既定では、logcatモニターは直前に実行されたアプリに関連するログのみを表示します。
アプリが例外を投げた時、logcat モニターは例外メッセージの後にそのコードへのリンクを含んだ関連スタックトレースを表示します。 この機能はエラーの修正とアプリ操作の改善に役立ちます。
Android Studio 2.2以降では、Run ウィンドウでも現在実行中のアプリのログメッセージを表示します。 logcat モニターの表示は設定できますが、Runウィンドウの表示は設定できないので注意してください。
全てのAndroid ログメッセージはそれに関連したタグと優先度を持っています。
システムログメッセージのタグとは、そのメッセージの由来元となるシステムコンポーネントを示す短い文字列です(例えば、ActivityManager
)。
ユーザーが定義したタグは、現在のクラスの名前(推奨タグ)のような役立つ文字列にすることができます。
Log
メソッドの呼び出し内でタグを定義します。例えば:
Log.d(tag, message);
優先順位は以下の値のうちいずれかになります:
ログメッセージの形式は以下の通りです:
date time PID-TID/package priority/tag: message
例えば、以下のログメッセージは V
の優先度とAuthZen
のタグを持っています:
12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.
PID はプロセスの識別子を表し、 TID はスレッドの識別子を表します; スレッドが一つしかない場合は、これらを同じ値にすることができます。
特定のアプリのログメッセージを表示するには:
既定では、logcatモニターは端末上やエミュレーター上で動作しているアプリのログメッセージのみを表示します。:
この既定設定を返納するには、logcat のメッセージをフィルタするを参照してください。
ログレベルを設定することで、logcat モニター上に表示されるメッセージの数を制御することができます。 全てのメッセージを表示したり、最も深刻な状況を示すメッセージのみを表示したりできます。
logcat モニターはログレベルの設定に関わらず全てのメッセージを収集し続けるということを覚えておいてください。 この設定は、logcat モニター が何を表示するかを決めるだけです。
ログレベルを設定するには:
logcat モニター上で現在表示されているメッセージを検索するには:
入力内容に応じて logcat モニターの表示が変化します。
ログ出力を管理可能なレベルまで減らすひとつの方法は、ファイルターを使って制限することです。
メモ: このフィルターは、logcat モニターに現在表示されているメッセージだけでなく、logcatの履歴全ての適用されます。 調べたいフィルター出力が表示されるように、他の表示オプションが適切に設定されているかを確認してください。
フィルターの定義と適用を行うには:
フィルターを定義した後、メニュー上からそれを選ぶこともできます。それらをメニューから削除するには、Edit Filter Configurationで開いた画面上から削除できます。
フィルターを削除するには、左のパネルからそのフィルターを選んで -をクリックします。
調べたいログメッセージが表示されていないと思われる場合は、 No filters を選んでみて、そのログメッセージを 検索してください。
ヘッダー表示をカスタマイズして知りたい情報のみを表示するには:
メッセージの要素に関する詳細についてはlogcat メッセージの形式を参照してください。
アプリが例外を投げた時、そのメッセージにはメソッド呼び出しのスタックトレースが含まれています。 logcatモニターを使用することで、ログ内のスタックトレースを素早く見つけて、関連コードをコードエディター上で閲覧することができます。 必要であれば(そして可能であれば)、逆コンパイラはあなたが見て判別できる形式のソースコードを表示します。
スタックトレースの上移動や下移動を行って、コードエディター上で関連コードを閲覧するには:
特定のメッセージをクリックすると、メッセージの表示が停止します。
ログの最後へ素早く移動してリアルタイムのメッセージフローを表示するには:
ログの情報を保持するには、ログをプリンターへ送信したり、ログをPDF ファイルに書き込んだり、ログをテキストファイルにコピーペーストしたりすることができます。
ログを印刷したり、PDFファイルへ書き込んだりするには:
パラメータを設定することで、ログをプリンターに送信したりPDFファイルに書き込んだりできます。
ログをテキストファイルへコピーするには:
Ctrl+A (⌘A) を押して全て選択します。
ログ全体をクリア(flush) するには:
問題が発生したログ出力ができなくなった場合は、ログを再スタートすることができます:
Log
クラスを使うことで
logcatモニターに表示されるログメッセージを作成することができます。
一般的には、以下のlogメソッドを使用します。優先度の最も高いものから最も低いもの(または、最も冗長なもの)の順で一覧表記しています。
:
Log.e(String, String)
(エラー)Log.w(String, String)
(警告)Log.i(String, String)
(情報)Log.d(String, String)
(デバッグ)Log.v(String, String)
(詳細)
オプションのより詳細な一覧についてはLog
クラスの説明を参照してください。
開発中の場合を除いて、詳細レベルのログを決してアプリにコンパイルしないでください。 デバッグログはコンパイルされても実行時に削除されますが、エラー・警告・情報ログは常に保持されます。
各 log メソッドについて、
最初のパラメータには重複のないタグを設定し、二つ目のパラメータにはメッセージを設定します。
システムログメッセージのタグは、
システムログメッセージのタグは、そのメッセージの由来元となるシステムコンポーネントを示す短い文字列です
(例えば、 ActivityManager
)。
タグは、現在のクラスの名前のような役立つ文字列にすることができます。
良いやり方は、クラス内で TAG
定数を宣言して最初のパラメーターに使うことです。
例えば、以下のようにして情報レベルのログメッセージを作成することができます。:
private static final String TAG = "MyActivity"; ... Log.i(TAG, "MyClass.getView() — get item number " + position);
メモ: logcat出力では、タグ名で23文字を越えた分は切り捨てられます。