📝
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