log method

Future<void> log(
  1. String message, {
  2. dynamic data,
  3. LogLevel level = LogLevel.info,
  4. bool printToConsole = true,
  5. bool saveToFile = true,
})

Implementation

Future<void> log(
  String message, {
  dynamic data,
  LogLevel level = LogLevel.info,
  bool printToConsole = true,
  bool saveToFile = true,
}) async {
  try {
    await _ensureInitialized();
    final timestamp = _dateFormat.format(DateTime.now());
    final levelStr = level.toString().split('.').last.toUpperCase();
    final dataStr = data != null ? '\nDATA: $data' : '';
    final logEntry = '[$timestamp] [$levelStr] $message$dataStr\n';

    if (printToConsole) {
      _printColored(level, logEntry);
    }

    if (saveToFile) {
      await _lock.synchronized(() async {
        await _logFile?.writeAsString(logEntry, mode: FileMode.append);
      });
    }
  // ignore: empty_catches
  } catch (e) {
  }
}