LoginSignup
0
0

More than 1 year has passed since last update.

Flutterでログ出力

Posted at

print()メソッドでログを出していますが、もう少し情報を追加して、汎用的なメソッドが欲しくて作ってみた。

作った後に知ったけど、【まとめ】Flutterでログ出力してデバッグする方法 | Dart【2022】で紹介されているようにいろいろな出力あるらしい。
ログを出力するloggerというパッケージもあるようだけど。

お勉強も兼ねて作ってる部分もあります。
kDebugModeをちゃんと試せてないので、いずれちゃんと確認したいところ。

実装と概要

そんなに難しことはやってないので、コードを見ればわかります。

import 'package:flutter/foundation.dart';
import 'package:intl/intl.dart';


/// ログ出力クラス
class Log{

  /// ログに利用する日時フォーマット
  static final DateFormat _datetimeFormat =  DateFormat("yyyy-MM-dd HH:mm:ss.ms");

  /// デバッグログ
  static void debug(String log){
    if (kDebugMode) {
      _log("DEBUG", log);
    }
  }

  /// 情報ログ
  static void info(String log){
    _log("INFO", log);
  }

  /// 警告ログ
  static void warn(String log){
    _log("WARN", log);
  }

  /// エラーログ
  static void error(String log, [Exception? exception]){
    var exceptionMessage = exception?.toString();
    _log("ERROR", "$log $exceptionMessage");
  }

  static void _log(String prefix, String log){
    String date = _datetimeFormat.format(DateTime.now());
    String stackTrace = StackTrace.current.toString();
    String target = stackTrace.split("#2")[1].split("#3")[0].split("(")[1];
    debugPrint("${target.substring(0, target.indexOf(")")).trim()} : [$date][$prefix] $log");
  }
}

やってることは、privateメソッドの_log()を使って、その中で、

  1. 日時を取得
  2. 呼び出し元のスタックトレースからファイルと行列の情報を取得。
  3. debugPrintでログを出力

そして、debug()、info()、warn()、error()を実装し、それぞれ種類わかるように出力しているだけです。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0