サイトのトップへ戻る

Android Studio ドキュメント 日本語訳

サイト内検索

Logcatを使ってログの出力と閲覧を行う

Android モニターには、デバッグメッセージを表示するlogcat モニターが含まれています。 logcat モニターでは、ガーベッジコレクションが発生した時などのシステムメッセージだけではなく、 Logクラスを使ってアプリに追加したメッセージも表示します。 これはリアルタイムでメッセージを表示し、古いメッセージを閲覧できるように履歴も保持します。

知りたい情報だけを表示するには、フィルターを作成したり、メッセージ内の表示される情報量を変更したり、優先度レベルを設定したり、アプリコードによって作成されたメッセージのみを表示したり、ログを検索したりできます。 既定では、logcatモニターは直前に実行されたアプリに関連するログのみを表示します。

アプリが例外を投げた時、logcat モニターは例外メッセージの後にそのコードへのリンクを含んだ関連スタックトレースを表示します。 この機能はエラーの修正とアプリ操作の改善に役立ちます。

Android Studio 2.2以降では、Run ウィンドウでも現在実行中のアプリのログメッセージを表示します。 logcat モニターの表示は設定できますが、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 はプロセスの識別子を表し、 TID はスレッドの識別子を表します; スレッドが一つしかない場合は、これらを同じ値にすることができます。



実行中のアプリを logcat モニターに表示する

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

  1. 前提条件や依存関係の準備を完了させます。
  2. アプリプロジェクトを開きます。
  3. ハードウェア端末上かエミュレーター上でアプリを実行します
  4. Android モニタを表示します
  5. logcat タブをクリックします。
  6. 既定では、logcatモニターは端末上やエミュレーター上で動作しているアプリのログメッセージのみを表示します。:

    この既定設定を返納するには、logcat のメッセージをフィルタするを参照してください。

  7. 必要に応じて、別の端末やエミュレーターやプロセスを選びます


ログレベルを設定する

ログレベルを設定することで、logcat モニター上に表示されるメッセージの数を制御することができます。 全てのメッセージを表示したり、最も深刻な状況を示すメッセージのみを表示したりできます。

logcat モニターはログレベルの設定に関わらず全てのメッセージを収集し続けるということを覚えておいてください。 この設定は、logcat モニター が何を表示するかを決めるだけです。

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

  • Log level メニュー内で以下の値のうち一つを選びます:
    • Verbose - 全てのログメッセージを表示します (既定)。
    • Debug - デバッグログメッセージ(開発時にのみ使用します)と、一覧内でこのメッセージより低レベルのメッセージを表示します。
    • Info - 通常の使用で出力されるであろうログメッセージと、一覧内でこのメッセージより低レベルのメッセージを表示します。
    • Warn - エラーではない潜在的問題と、一覧内でこのメッセージより低レベルのメッセージを表示します。
    • Error - エラーの原因となった問題と、一覧内でこのメッセージより低レベルのメッセージを表示します。
    • Assert - 開発者が決して起きないだろうと想定していた問題を表示します。


logcat のメッセージを検索する

logcat モニター上で現在表示されているメッセージを検索するには:

  1. 正規表現の検索パターンを使用したい場合は、必要に応じて Regex を選びます。
  2. 検索フィールドSearch iconに文字列を入力します。
  3. 入力内容に応じて logcat モニターの表示が変化します。

  4. Enter キーを押すと、このセッションの間はメニュー内に検索文字列を保存できます。
  5. 再度検索を行うには、検索メニューから検索文字列を選びます。 必要に応じてRegex を選択もしくは選択解除します(この設定は保存されません)。


logcat のメッセージをフィルタする

ログ出力を管理可能なレベルまで減らすひとつの方法は、ファイルターを使って制限することです。

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

フィルターの定義と適用を行うには:

  1. フィルターメニュー内でフィルターオプションを選びます:
    • Show only selected application - アプリコードによって生成されたメッセージのみを表示します (既定)。 logcat モニターは実行中のアプリのPIDを使ってログメッセージをフィルタします。
    • No Filters - フィルターは適用しません。 logcat モニターは。選択したプロセスに関わらず、端末から生じた全てのログメッセージを表示します。
    • Edit Filter Configuration - カスタムフィルターの作成や編集を行います。例えば、二つのアプリのログメッセージを同時に閲覧するためのフィルターを作成することができます。

    フィルターを定義した後、メニュー上からそれを選ぶこともできます。それらをメニューから削除するには、Edit Filter Configurationで開いた画面上から削除できます。

  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 のヘッダー表示を設定する

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

  • Use Soft Wraps Use Soft Wraps iconを選んで、メッセージ全体が表示された右端からはみ出ないようにします。
  • Configure Logcat Header Configure Logcat header iconをクリックして、表示したいもしくは隠したいメッセージの要素を設定し、OKをクリックします。

メッセージの要素に関する詳細についてはlogcat メッセージの形式を参照してください。



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

アプリが例外を投げた時、そのメッセージにはメソッド呼び出しのスタックトレースが含まれています。 logcatモニターを使用することで、ログ内のスタックトレースを素早く見つけて、関連コードをコードエディター上で閲覧することができます。 必要であれば(そして可能であれば)、逆コンパイラはあなたが見て判別できる形式のソースコードを表示します。

スタックトレースの上移動や下移動を行って、コードエディター上で関連コードを閲覧するには:

  • Up the Stack Trace Up the Stack Trace iconをクリックして、 ログ内の現在の位置から一つ前のメソッドへ移動します。
  • Down the Stack Trace Down the Stack Trace iconをクリックして、 ログ内の現在の位置から次のメソッドへ移動します。


ログの最後に移動する

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

ログの最後へ素早く移動してリアルタイムのメッセージフローを表示するには:

  • Scroll to the End Scroll to the End iconをクリックします。
  • End キーを押します。
  • ログの最後になるまでスクロールするか、 Page Down キーを押します。


印刷とファイルへの書き込み

ログの情報を保持するには、ログをプリンターへ送信したり、ログをPDF ファイルに書き込んだり、ログをテキストファイルにコピーペーストしたりすることができます。

ログを印刷したり、PDFファイルへ書き込んだりするには:

  1. Print Print iconをクリックします。
  2. Android Studioの Print ダイアログで、必要であれば印刷パラメータを変更してPrintをクリックします。
  3. OSの Print ダイアログで、必要であれば印刷パラメータを変更してPrintをクリックします。
  4. パラメータを設定することで、ログをプリンターに送信したりPDFファイルに書き込んだりできます。

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

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

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


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

ログ全体をクリア(flush) するには:

  • Clear logcat Clear logcat iconをクリックします。

問題が発生したログ出力ができなくなった場合は、ログを再スタートすることができます:

  • Restart Restart iconをクリックします。


コードにログ出力を追加する

Log クラスを使うことで logcatモニターに表示されるログメッセージを作成することができます。 一般的には、以下のlogメソッドを使用します。優先度の最も高いものから最も低いもの(または、最も冗長なもの)の順で一覧表記しています。 :

オプションのより詳細な一覧についてはLog クラスの説明を参照してください。

開発中の場合を除いて、詳細レベルのログを決してアプリにコンパイルしないでください。 デバッグログはコンパイルされても実行時に削除されますが、エラー・警告・情報ログは常に保持されます。

各 log メソッドについて、 最初のパラメータには重複のないタグを設定し、二つ目のパラメータにはメッセージを設定します。 システムログメッセージのタグは、 システムログメッセージのタグは、そのメッセージの由来元となるシステムコンポーネントを示す短い文字列です (例えば、 ActivityManager )。 タグは、現在のクラスの名前のような役立つ文字列にすることができます。

良いやり方は、クラス内で TAG 定数を宣言して最初のパラメーターに使うことです。 例えば、以下のようにして情報レベルのログメッセージを作成することができます。:

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

メモ: logcat出力では、タグ名で23文字を越えた分は切り捨てられます。