logcat を使用したログの出力と確認

Android Monitor には、デバッグ メッセージを表示する logcat Monitor が含まれています。logcat Monitor には、ガベージ コレクションが行われたタイミングなどのシステム メッセージに加えて、アプリで Log クラスを使用して追加したメッセージも表示されます。メッセージはリアルタイムで表示され、履歴も保持されるため古いメッセージも確認できます。

フィルタの作成、メッセージに表示する情報量の変更、優先レベルの設定、アプリコードにより生成されたメッセージのみの表示、ログの検索を行うことで、注目する情報のみを表示することができます。デフォルトでは、logcat Monitor には直近に実行したアプリに関するログ出力のみが表示されます。

アプリが例外をスローすると、logcat Monitor にはメッセージに続いて、コードへのリンクを含む関連するスタックトレースが表示されます。この機能は、エラーを修正してアプリの動作を改善するのに役立ちます。

Android Studio 2.2 では、[Run] ウィンドウに現在実行中のアプリのログ メッセージも表示されます。logcat Monitor の表示は設定が可能ですが、[Run] ウィンドウの設定はできません。

logcat メッセージの形式

すべての Android ログメッセージには、タグと優先度が関連付けられています。システム ログメッセージのタグは、メッセージの送信元のシステム コンポーネントを示す短い文字列です(例: ActivityManager)。ユーザー定義のタグには、現在のクラスの名前(推奨タグ)など、役立つと考えられる任意の文字列を使用できます。次の例では、Log メソッド呼び出しでタグを定義しています。

Log.d(tag, message);

優先度は、次のいずれかの値です。

  • V - Verbose(最も低い優先度)
  • D - Debug
  • I - Info
  • W - Warning
  • E - Error
  • A — Assert

ログ メッセージの形式は次のとおりです。

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 はプロセス ID の略で、TID はスレッド ID の略です。スレッドが 1 つしか存在しない場合、これらは同一になり得ます。

logcat Monitor での実行中アプリの表示

特定のアプリのログ メッセージを表示するには:

  1. 前提条件と依存関係を満たします。
  2. アプリ プロジェクトを開きます。
  3. ハードウェア端末またはエミュレータでアプリを実行します。
  4. Android Monitor を表示します
  5. [logcat] タブをクリックします。
  6. デフォルトでは、logcat Monitor にはデバイスまたはエミュレータで実行しているアプリのログ メッセージが表示されます。

    このデフォルトを変更する場合は、logcat メッセージのフィルタリングをご覧ください。

  7. 任意で、別のデバイス、エミュレータ、またはプロセスを選択します

ログレベルの設定

ログレベルを設定して、logcat Monitor に表示されるメッセージの量を制御できます。すべてのメッセージを表示することも、特に重大な問題に関するメッセージのみを表示することも可能です。

ログレベルの設定とは関係なく、logcat Monitor では引き続きすべてのメッセージを収集します。この設定は、logcat Monitor に表示される内容のみに反映されます。

ログ レベルを設定するには:

  • [Log level] メニューで、次のいずれかの値を選択します。
    • Verbose - すべてのログ メッセージを表示します(デフォルト)。
    • Debug - 開発時にのみ役立つデバッグ ログ メッセージ、およびこのリストでこれより下にあるレベルのメッセージを表示します。
    • Info - 通常の使用で発生するログ メッセージ、およびこのリストでこれより下にあるレベルのメッセージを表示します。
    • Warn - エラーとは言えない潜在的な問題、およびこのリストでこれより下にあるレベルのメッセージを表示します。
    • Error - エラーを引き起こした問題、およびこのリストでこれより下にあるレベルのメッセージを表示します。
    • Assert - 開発者にとって絶対に発生してはいけない問題を表示します。

logcat メッセージの検索

現在 logcat Monitor に表示されているメッセージを検索するには:

  1. 正規表現検索パターンを使用する場合は、[Regex] を選択します(任意)。
  2. 検索フィールドに 文字列を入力します。
  3. logcat Monitor の表示が、検索条件に応じて変わります。

  4. Enter キーを押すと、現在のセッションの間は検索文字列がメニューに保存されます。
  5. 検索を繰り返すには、検索メニューからこの文字列を選択します。必要に応じて、[Regex] を選択または選択解除します(この設定は記憶されません)。

logcat メッセージのフィルタリング

ログ出力を扱いやすいレベルまで削減する方法の 1 つとして、フィルタによる出力の制限があります。

注: フィルタは、現在 logcat Monitor に表示されているメッセージにではなく、logcat 履歴全体に適用されます。その他の表示オプションが適切に設定されていることを確認して、調査対象のフィルタ出力が表示されるようにしてください。

フィルタを定義および適用するには:

  1. フィルタ メニューで、フィルタ オプションを選択します。
    • Show only selected application - アプリコードにより生成されたメッセージのみを表示します(デフォルト)。logcat Monitor では、アクティブなアプリの PID を使用してメッセージをフィルタリングします。
    • No Filters - フィルタを適用しません。logcat Monitor では、選択しているプロセスとは関係なく、デバイスからのすべてのログ メッセージを表示します。
    • Edit Filter Configuration - カスタム フィルタを作成または変更します。たとえば、同時に 2 つのアプリからのログ メッセージを表示するフィルタを作成できます。

    フィルタを定義した後は、それらをメニューから選択することも可能です。フィルタをメニューから除外するには、フィルタを削除します。

  2. Edit Filter Configuration を選択した場合は、フィルタを作成または変更します。
    1. [Create New Logcat Filter] ダイアログで、フィルタのパラメータを指定します。
      • Filter Name - 定義するフィルタの名前を入力するか、左ペインで既存のフィルタ名を選択してそのフィルタを変更します。名前には、小文字、アンダースコア、および数字のみを含めることができます。
      • Log Tag - タグを指定します(省略可能)。詳細については、logcat メッセージの形式をご覧ください。
      • Log Message - ログ メッセージ テキストを指定します(省略可能)。詳細については、logcat メッセージの形式をご覧ください。
      • Package Name - パッケージ名を指定します(省略可能)。詳細については、logcat メッセージの形式をご覧ください。
      • PID - プロセス ID を指定します(省略可能)。詳細については、logcat メッセージの形式をご覧ください。
      • Log Level - ログレベルを選択します(省略可能)。詳細については、ログレベルの設定をご覧ください。
      • Regex - 該当パラメータに正規表現構文を使用する場合は、このオプションを選択します。
    2. [+] をクリックして、左ペインにフィルタ定義を追加します。
    3. フィルタを削除するには、[-] をクリックします。

    4. 完了したら、[OK] をクリックします。[Cancel] をクリックすると、フィルタの追加や変更はすべて失われます。
  3. 調査が必要なログ メッセージが表示されていることを確認します。
  4. 必要なログ メッセージが表示されていないと思われる場合は、[No filters] を選択して、特定のログ メッセージを検索します。

logcat ヘッダー表示の設定

ヘッダー表示をカスタマイズして注目する情報のみを表示するには:

  • ソフトラップの使用 ソフトラップの使用アイコン を選択してメッセージ全体を表示して、右端で切れてしまうのを防止します。
  • logcat ヘッダーの設定 logcat ヘッダーの設定アイコン をクリックして、表示または非表示にするメッセージの要素を指定して、[OK] をクリックします。

メッセージ要素の詳細については、logcat メッセージの形式をご覧ください。

スタックトレースの上下の移動

アプリが例外をスローすると、メッセージにはメソッド呼び出しのスタックトレースが表示されます。logcat Monitor でログ内のスタックトレースを素早く特定して、関連するコードをコード エディタに表示することができます。必要に応じて(可能な場合)、逆コンパイラによって取得されたソースコードを見ることもできます。

スタックト レースを上下に移動して関連するコードをコードエディタで表示するには:

  • スタックトレースを上に移動 スタックトレースを上に移動アイコン をクリックして、ログの現在の位置から前のメソッドに移動します。
  • スタックトレースを下に移動 スタックトレースを下に移動アイコン をクリックして、ログの現在の位置から次のメソッドに移動します。

ログの終端への移動

特定のメッセージをクリックすると、メッセージの表示が停止します。

ログの終端まですばやく移動してリアルタイムのメッセージ フローを表示するには:

  • 終端までスクロール アイコン 終端までスクロール アイコンをクリックします。
  • End キーを押します。
  • 終端に到達するまで、スクロールするか Page Down キーを押します。

印刷とファイルへの書き出し

ログ情報を保持するために、ログをプリンターに送信したり、PDF ファイルに書き出したり、テキスト ファイルにコピー アンド ペーストしたりできます。

ログを印刷したり PDF ファイルに書き出したりするには:

  1. 印刷アイコン 印刷アイコンをクリックします。
  2. Android Studio の [Print] ダイアログで印刷のパラメータを変更して(任意)、[Print] をクリックします。
  3. オペレーティング システムの [Print] ダイアログで印刷のパラメータを変更して(任意)、[Print] をクリックします。
  4. パラメータを設定して、ログをプリンターに送信したり PDF ファイルに書き出したりできます。

ログをテキスト ファイルにコピーするには:

  1. logcat Monitor で、ログテキストを選択してコピーします。
  2. Ctrl+A(⌘A)を押して、すべて選択します。

  3. テキスト エディタを開いて、テキストをファイルに貼り付けます。

ログのクリアと再スタート

ログ全体をクリア(フラッシュ)するには:

  • logcat のクリア アイコン logcat のクリア アイコンをクリックします。

問題があってログが出力されない場合は、ログを再スタートできます。

  • 再スタートアイコン 再スタートアイコンをクリックします。

コードへのログ メッセージの追加

Log クラスでは、logcat Monitor に表示されるログ メッセージを作成できます。通常、以下のログメソッドを使用します。優先度の高いものから順に示しています(下にいくほど詳細)。

オプションの一覧については、Log クラスの説明をご覧ください。

開発時を除き、詳細ログをアプリにコンパイルすべきではありません。デバッグ ログはコンパイルされますが、実行時には取り除かれます。一方、エラー、警告、および情報のログは常に保持されます。

各ログ メソッドでは、1 つ目のパラメータに一意のタグを、2 番目のパラメータにメッセージを指定する必要があります。システム ログ メッセージのタグは、メッセージの発信元であるシステム コンポーネントを示す短い文字列です(例: ActivityManager )。独自のタグには、現在のクラスの名前など、役立つと考えられる任意の文字列を使用できます。

クラス内で TAG 定数を宣言して 1 つ目のパラメータに使用するのが一般的であり、推奨されます。例えば、次のように情報ログ メッセージを作成します。

private static final String TAG = "MyActivity";
...
Log.i(TAG, "MyClass.getView() — get item number " + position);

注: 23 文字を超えるタグ名は、logcat 出力では切り捨てられます。