Frezyx / talker

☎️ Advanced error handler and logger for dart and flutter apps
https://pub.dev/packages/talker
MIT License
478 stars 57 forks source link

Can't change colors for talker_flutter #223

Open polemius opened 4 months ago

polemius commented 4 months ago

Describe the bug I can't redifine colors for talker_flutter. It uses the default one only.

Code

  final logger = TalkerLogger(
    settings: TalkerLoggerSettings(
      colors: {
        LogLevel.critical: AnsiPen()..red(),
        LogLevel.error: AnsiPen()..magenta(),
        LogLevel.info: AnsiPen()..red(),
      },
      enableColors: true,
    ),
    output: (String message) {
      if (kIsWeb) {
        // ignore: avoid_print
        print(message);
        return;
      }
      if ([TargetPlatform.iOS, TargetPlatform.macOS]
          .contains(defaultTargetPlatform)) {
        log(message, name: 'Talker');
        return;
      }
      debugPrint(message);
    },
  );

  logger.info('test');
  final talkerFlutter = TalkerFlutter.init(
    logger: logger,
  );
  talkerFlutter.info('test');

Screenshots

image

Desktop (please complete the following information):

Smartphone (please complete the following information):

abdelaziz-mahdy commented 3 months ago

searching through the code of the package i found that when defining talkerflutter is overrides the logger settings for the colors

https://github.com/Frezyx/talker/blob/b6340fd184f06f58bd6526af26ff0d055215a1be/packages/talker/lib/src/talker.dart#L65C6-L77C6

this example will work

  final logger = TalkerLogger(
    settings: TalkerLoggerSettings(
      colors: {
        LogLevel.critical: AnsiPen()..red(),
        LogLevel.error: AnsiPen()..magenta(),
        LogLevel.info: AnsiPen()..red(),
      },
      enableColors: true,
    ),
    output: (String message) {
      if (kIsWeb) {
        // ignore: avoid_print
        print(message);
        return;
      }
      if ([TargetPlatform.iOS, TargetPlatform.macOS]
          .contains(defaultTargetPlatform)) {
        log(message, name: 'Talker');
        return;
      }
      debugPrint(message);
    },
  );

  logger.info('test');
  final talkerFlutter = TalkerFlutter.init(
      logger: logger,
      settings: TalkerSettings(colors: {
        TalkerLogType.critical: AnsiPen()..red(),
        TalkerLogType.error: AnsiPen()..magenta(),
        TalkerLogType.info: AnsiPen()..red(),
      }));
  talkerFlutter.info('test');

as you can see the colors defined TalkerFlutter.init will be used and the one on logger level will be ignored

image