This is a simple library to log events with colorful terminal outputs and stop watch class to measure performance across your application.

Usage

import 'package:vit_logger/vit_logger.dart';

void main() async {
  var logger = TerminalLogger();
  logger.info('This is a informational message'); // "This is a informational message" in the green
  logger.warn('This is a warning message'); // "This is a warning message" in yellow
  logger.error('This is a error message'); // "This is a error message" in red
  logger.debug('This is a debug message'); // "This is a debug message" in magenta
  var otherLogger = TerminalLogger(
    timestampMode: TimestampMode.timeIso,
  );
  otherLogger.info('this is a message with a timestamp'); // 16:57:11.00 this is a message with a timestamp
  var stopWatch = VitStopWatch('MyEvent');
  await Future.delayed(const Duration(milliseconds: 200));
  stopWatch.lap(tag: 'FETCHED'); // MyEvent [FETCHED] (204ms)
  await Future.delayed(const Duration(milliseconds: 800));
  stopWatch.stop(); // MyEvent (1008ms)

  VitLogger.eventMatcher.patterns = [RegExp(r'Home(:.*)?')];

  var loginLogger = TerminalLogger(
    event: 'Login',
  );
  loginLogger.info('This is not printed because event was filtered');

  var homeLogger = TerminalLogger(
    event: 'Home',
  );
  homeLogger.info('This is a "Home" message');

  var homeMenuLogger = TerminalLogger(
    event: 'Home:Menu',
  );
  homeMenuLogger.info('This is a "Home:Menu" message');
}

Screenshot 2024-03-25 at 11 41 35

Features

BaseLogger

Base abstract class to implement any logger. This class makes use of VitLogger.eventMatcher for event filtering.

TerminalLogger

The default logger. This logger uses the terminal to print colorful messages.

VitStopWatch

Class to help debug methods that take some time to complete or that could take some time.

Common issues

TerminalLogger prints strange characters on IOS

This is a open flutter Github Issue

To fix this, either disable colors on TerminalLogger:

TerminalLogger.disableColorfulOutput = false;

Or use another printer inside TerminalLogger:

TerminalLogger.printer = TerminalPrinter.developerLog;

Libraries

vit_logger