writeLog method

Future<void> writeLog(
  1. String data
)

Implementation

Future<void> writeLog(String data) async {
  if (_cacheDirectoryPath == null) {
    await _initializeCacheDirectory();
  }

  final now = DateTime.now();
  final logFilePath =
      '$_cacheDirectoryPath/$logFilePrefix-${now.day.toString().padLeft(2, '0')}-${now.month.toString().padLeft(2, '0')}-${now.year}.txt';

  final serializedData = _serializeData(data);
  final timestamp = _getFormattedTimestamp();
  final content = '$timestamp $serializedData\n';

  _fileLocks[logFilePath] ??= Future.value();

  _fileLocks[logFilePath] = _fileLocks[logFilePath]!
      .then((_) async {
        final logFile = File(logFilePath);

        if (!await logFile.exists()) {
          final header = await _createHeader();
          await logFile.writeAsString(header, mode: FileMode.write);
        }

        await logFile.writeAsString(content, mode: FileMode.append);
      })
      .catchError((e) {});

  return _fileLocks[logFilePath];
}