📝
Flutterのデバッグ:print() と log() の違いと使い分け
Flutterのデバッグ:print() と log() の違いと使い分け
Flutterアプリを開発する際、ログを出力してデバッグすることは避けられません。その際に一般的に使われるのが print()
ですが、Dart には log()
という便利な関数もあります。
この記事では、print()
と log()
の違いを解説し、どちらをどのように使い分けるべきかを紹介します。
print()
と log()
の違い
✅ 特徴 | print() |
log() |
---|---|---|
ログのフィルタリング | ❌ 不可 | ✅ カテゴリ (name ) で可能 |
ログレベル管理 | ❌ なし | ✅ level で管理可能 |
スタックトレース表示 | ❌ なし | ✅ stackTrace 追加可能 |
Flutter DevTools で確認 | ❌ できない | ✅ "Logging" タブで確認可能 |
log()
は print()
の上位互換のような存在で、ログ管理をしやすくするための機能が備わっています。
print()
の使いどころ
🟢 print()
はシンプルなデバッグに向いています。
使うべきケース
- 一時的なデバッグ
- 簡単な変数の値の確認
- コンソールに軽く出力してチェックしたいとき
使用例
int counter = 5;
print("現在のカウンター値: $counter");
💡 注意点
-
print()
はすべてのログがコンソールに表示されるため、ログが増えると見づらくなる。 - ログの種類を分けて管理することができない。
log()
の使いどころ
🔵 log()
はログ管理をしやすくするための上位互換的な関数です。
使うべきケース
- APIリクエスト・レスポンスのログ
- エラーハンドリング(スタックトレース付き)
- ログをカテゴリごとに整理したいとき
- Flutter DevTools でログを管理したいとき
使用例
import 'dart:developer';
log("APIリクエスト: $url", name: "API");
log("APIレスポンスコード: ${response.statusCode}", name: "API");
log("APIレスポンス: ${response.body}", name: "API");
log()
を使うメリット
✅ カテゴリ(name)をつけられる → IDEやFlutter DevToolsでフィルタリング可能
✅ エラーハンドリングがしやすい → stackTrace
を追加できる
✅ ログレベルを設定できる → 重要なログを強調可能
エラーハンドリングの例
try {
throw Exception("サーバーエラー");
} catch (e, stackTrace) {
log("エラー発生: $e", name: "ERROR", level: 1000, stackTrace: stackTrace);
}
print()
vs log()
の使い分け
📌 状況 | 推奨する関数 |
---|---|
ちょっとしたデバッグ | print() |
APIリクエスト・レスポンスのログ | log(name: "API") |
エラーハンドリング | log(name: "ERROR", level: 1000, stackTrace: stackTrace) |
Flutter DevTools でログを管理 | log(name: "DEBUG") |
💡 開発初期は print()
、ログを整理したくなったら log()
に移行するのがベスト!
🚀 まとめ
-
print()
はシンプルなデバッグ向け。 -
log()
はカテゴリ分け・エラーハンドリング・DevTools対応で管理しやすい。 - 開発の初期は
print()
、本格的なログ管理にはlog()
を使おう!
Flutter開発でのデバッグを効率化するために、ぜひ log()
を活用してみてください!
Discussion