🔍 Logcatとは?
Logcat(ログキャット) は、Androidアプリの動作中に発生するログ(メッセージ)をリアルタイムで表示するツールです。Javaで言えば System.out.println()
をもっと強力にしたもの、というイメージです。
Android Studioでは、「Logcat」タブからログを確認できます。
📋 Logcatの基本構成
Logcatの1行のログは、ざっくり次のような情報を含んでいます:
2025-05-14 14:22:35.123 12345-12345/com.example.app D/MainActivity: ボタンが押されました
部分 | 内容 |
---|---|
2025-05-14 14:22:35.123 | ログのタイムスタンプ |
12345-12345 | プロセスIDとスレッドID |
com.example.app | アプリのパッケージ名 |
D | ログレベル(後述) |
MainActivity | ログ出力元のタグ |
ボタンが押されました | 実際のメッセージ |
🧭 ログレベルの意味
ログには優先度(ログレベル)があり、次のように分類されます:
レベル | 説明 | 用途の例 |
---|---|---|
V (Verbose) | 一番詳細、基本全出力 | デバッグ中の情報すべて |
D (Debug) | デバッグ用情報 | 処理の流れ、変数の確認など |
I (Info) | 状態変化などの情報 | 起動成功、画面遷移通知など |
W (Warn) | 警告だが致命的ではない | 非推奨API使用、設定ミスなど |
E (Error) | エラー発生 | 例外、クラッシュなど |
A (Assert) | 通常は使用しない | 重大な失敗検出用(開発中) |
🛠️ Log出力の書き方(Java)
以下のように、Log
クラスを使って出力します:
Log.d("MainActivity", "ボタンが押されました");
Log.e("LoginActivity", "ログイン失敗", e); // 例外付き
メソッド | ログレベル |
---|---|
Log.v() | Verbose |
Log.d() | Debug |
Log.i() | Info |
Log.w() | Warn |
Log.e() | Error |
タグ(第一引数) は通常、クラス名や画面名を入れます。ログ検索時に便利です。
🔎 トラブルシューティングの進め方
① クラッシュ時の確認方法
- Logcatで
E
(Error)レベルをフィルタリング Exception
やCaused by:
を探す- スタックトレースを上から順に確認
- 自分のアプリのクラス名を含む行を探す
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.app, PID: 12345
java.lang.NullPointerException: Attempt to invoke method on null object
at com.example.app.MainActivity.onCreate(MainActivity.java:42)
ここで注目するのは → MainActivity.java:42
→ 42行目で null
を参照している可能性があります。
② よくあるトラブル例とログの見方
トラブル | 典型ログ例 | 原因と対策 |
---|---|---|
NullPointerException | Attempt to invoke... | オブジェクトが初期化されていない |
ActivityNotFoundException | Unable to find explicit activity class | AndroidManifest.xml に定義漏れ |
NetworkOnMainThreadException | android.os.NetworkOnMainThreadException | ネットワーク通信をUIスレッドで行っている |
ClassCastException | java.lang.ClassCastException | findViewById() のキャストミス |
Resources$NotFoundException | resource ID not found | 存在しないリソースを参照している |
🎛️ Logcatのフィルタ活用
Android StudioのLogcatでは、次のようなフィルタ機能があります:
- ログレベルの絞り込み(Debug、Errorなど)
- 特定タグのみ表示
- 特定キーワードで検索(例: “Exception”)
- 現在実行中のアプリのログのみ表示
👉 まずは "Show only selected application"
をオンにして、自分のアプリのログに絞るのがおすすめです。
🧹 デバッグが落ち着いたら…
デバッグ時は Log.d()
を多用しますが、本番ビルドではこれらを出力しないようにしましょう。
Gradleのビルドタイプや BuildConfig.DEBUG
を使って制御できます:
if (BuildConfig.DEBUG) {
Log.d("DebugTag", "ここは開発中だけ出す");
}
✅ まとめ
ポイント |
---|
Logcat は Android の標準ログ表示ツール |
ログレベルは V, D, I, W, E が基本 |
Log.d() などで出力、タグ名で整理する |
クラッシュ時は E/AndroidRuntime を探す |
Logcat フィルタで効率的にトラブル対応 |