dart_logging_abstraction 1.1.0 copy "dart_logging_abstraction: ^1.1.0" to clipboard
dart_logging_abstraction: ^1.1.0 copied to clipboard

A logging abstraction package for logging, defines interfaces, common classes and default implementations.

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.

2
likes
160
points
56
downloads

Publisher

unverified uploader

Weekly Downloads

A logging abstraction package for logging, defines interfaces, common classes and default implementations.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

More

Packages that depend on dart_logging_abstraction