fetchContainerLog static method

Future<void> fetchContainerLog(
  1. Client cloudApiClient, {
  2. required void writeln(
    1. String
    ),
  3. required String projectId,
  4. required DateTime? before,
  5. required DateTime? after,
  6. required int limit,
  7. required bool inUtc,
})

Implementation

static Future<void> fetchContainerLog(
  final Client cloudApiClient, {
  required final void Function(String) writeln,
  required final String projectId,
  required final DateTime? before,
  required final DateTime? after,
  required final int limit,
  required final bool inUtc,
}) async {
  final timezoneName = inUtc
      ? 'UTC'
      : 'local (${DateTime.now().timeZoneName})';
  writeln(
    'Fetching logs from ${after?.toTzString(inUtc) ?? 'oldest'} '
    'to ${before?.toTzString(inUtc) ?? 'newest'}. Display time zone: $timezoneName.',
  );

  final Stream<LogRecord> recordStream;
  if (before == null && after == null) {
    recordStream = cloudApiClient.logs.fetchRecentRecords(
      cloudCapsuleId: projectId,
      limit: limit,
    );
  } else {
    recordStream = cloudApiClient.logs.fetchRecords(
      cloudCapsuleId: projectId,
      beforeTime: before,
      afterTime: after,
      limit: limit,
    );
  }

  await _outputLogStream(writeln, recordStream, limit: limit, inUtc: inUtc);
}