AppLog constructor

AppLog({
  1. LogFilter? filter,
  2. LogPrinter? printer,
  3. LogOutput? output,
  4. Level? level,
})

Create a new instance of AppLog.

You can provide a custom printer, filter and output. Otherwise a PrettyPrinter is used — same as Logger's own default, except with DateTimeFormat.onlyTimeAndSinceStart turned on so the console shows a timestamp (bare PrettyPrinter() prints no time by default), and excludePaths: ['package:http_inspect_view'] so the method-count stack trace box skips past AppLog's own log/t/d/i/w/e/f frames and lands on your actual call site instead. filter defaults to DevelopmentFilter, output to ConsoleOutput.

Implementation

AppLog({
  LogFilter? filter,
  LogPrinter? printer,
  LogOutput? output,
  Level? level,
}) : _filter = filter ?? Logger.defaultFilter(),
     _printer =
         printer ??
         PrettyPrinter(
           colors: true,
           printEmojis: true,
           dateTimeFormat: DateTimeFormat.onlyTimeAndSinceStart,
           excludePaths: const ['package:http_inspect_view'],
         ),
     _output = output ?? Logger.defaultOutput() {
  if (level != null) _filter.level = level;
  if (kReleaseMode && !_warnedReleaseMode) {
    _warnedReleaseMode = true;
    debugPrint(
      '[AppLog] Warning: AppLog is intended for debug/profile use — this '
      'is a release build. Logs are still being formatted, printed to '
      'your output, and held in memory for the HTTP Inspector\'s Logs '
      'tab (unreachable in release, but still retained). Guard your '
      'AppLog usage with kDebugMode/kProfileMode if that\'s unintended.',
    );
  }
  _initialization = Future.wait([
    _filter.init(),
    _printer.init(),
    _output.init(),
  ]);
}