dart_logging_abstraction

pub package CI Last Commits Pull Requests Code size License

A logging abstraction package for logging.

Features

Provide logging interfaces, common objects and with example implementations.

Getting started

Install this package, use other logging package implementation adapt to this package.

Usage

import 'package:dart_logging_abstraction/dart_logging_abstraction.dart';

void main() {
  // Logging implementation example can find in lib/src/console_logging.dart
  final traceLogger = LoggerFactory(minLevel: LogLevel.trace).createLogger<MyClass>();
  traceLogger.fatal("Fatal on traceLogger", error: Error(), stackTrace: StackTrace.current);
  traceLogger.error("Error on traceLogger", error: Error(), stackTrace: StackTrace.current);
  traceLogger.warn("Warning on traceLogger");
  traceLogger.info("Info on traceLogger");
  traceLogger.debug("Debug on traceLogger");
  traceLogger.trace("trace on traceLogger");

  final infoLogger = LoggerFactory(minLevel: LogLevel.info).create("InfoLogger");
  infoLogger.fatal("Fatal on infoLogger", error: Error(), stackTrace: StackTrace.current);
  infoLogger.error("Error on infoLogger", error: Error(), stackTrace: StackTrace.current);
  infoLogger.warn("Warning on infoLogger");
  infoLogger.info("Info on infoLogger");
  infoLogger.debug("Debug on infoLogger");
  infoLogger.trace("trace on infoLogger");
}

class MyClass {}
/// An example console logger implementation of [ILogger]
class ConsoleLogger implements ILogger {
  @override
  final String name;
  final LogLevel _minLevel;

  const ConsoleLogger({required this.name, required LogLevel minLevel}) : _minLevel = minLevel;

  @override
  bool isEnabled(LogLevel logLevel) => logLevel >= _minLevel;

  @override
  void log(message, LogLevel logLevel, {Object? error, StackTrace? stackTrace}) {
    if (!isEnabled(logLevel)) {
      return;
    }
    final writer = StringBuffer();
    writer.writeln("[${logLevel.name}] ${DateTime.now()} [$name]");
    writer.writeln(message);
    if (error != null) {
      writer.writeln(error);
    }
    if (stackTrace != null) {
      writer.writeln(stackTrace);
    }
    writer.write("\b\b");
    print(writer);
  }
}

/// An example console logger factory implementation of [ILogger]
class LoggerFactory implements ILoggerFactory {
  final LogLevel _minLevel;

  const LoggerFactory({required LogLevel minLevel}) : _minLevel = minLevel;

  @override
  ILogger create(String name) {
    return ConsoleLogger(name: name, minLevel: _minLevel);
  }
}

Implementations

  1. dart_service_logger
    Using logger and support dart_service_provider extensions.

Want to be on the list? Contact me.

Additional information

If you have any issues or suggests please redirect to repo or send an email to me.

Libraries

dart_logging_abstraction
Provide logging interfaces, common objects and with out any implementations.