dart_logging library
A Pino-style logging framework for Dart
Usage:
final context = createLoggingContext(
transports: [logTransport(logToConsole)],
);
final logger = createLoggerWithContext(context);
logger.info('Hello world');
logger.warn('Something might be wrong');
final childLogger = logger.child({'requestId': 'abc-123'});
childLogger.info('Processing request'); // requestId auto-included
Represents a fault caused by an Error
ExceptionFault
Represents a fault caused by an Exception
Fault
Represents a fault that occurred during program execution
MessageFault
Represents a fault with a text message
UnknownFault
Represents an unknown fault type
The severity of the log message
Extensions for child logger support
LoggerExtensions
on Logger
Pino-style extensions for Logger
LoggingContextExtensions
on LoggingContext
Extensions for the LoggingContext
Creates a Logger from a LoggingContext (currying)
createLoggerWithContext(LoggingContext context)
→ Logger
Creates a Logger and stores its context for child() support
createLoggingContext({List<LogTransport>? transports, LogLevel? minimumLogLevel, Map<String, dynamic>? bindings})
→ LoggingContext
Creates a logging context
logToConsole(LogMessage message, LogLevel minimumLogLevel)
→ void
Logs a message to the console with formatting and structured data
logTransport(LogFunction log, {Future<void> initialize()?})
→ LogTransport
Creates a log transport with the specified log function and optional
initialization
processTemplate(String template, Map<String, dynamic>? structuredData)
→ String
Processes a message template by replacing placeholders with values from
structured data
LogFunction
= void Function(LogMessage, LogLevel minimumlogLevel)
A function that logs a LogMessage
Logger
= void Function(String message, {required LogLevel level, Map<String, dynamic>? structuredData, List<String>? tags})
A Logger is a curried function that captures the LoggingContext
Use extensions for .info(), .warn(), .error(), .child() etc.
LoggingContext
= ({Map<String, dynamic> bindings, List<String> extraTags, LogLevel minimumLogLevel, List<LogTransport> transports})
The context that keeps track of the transports and configuration
LogMessage
= ({Fault? fault, LogLevel logLevel, String message, StackTrace? stackTrace, Map<String, dynamic>? structuredData, List<String>? tags, DateTime timestamp})
A log message
LogTransport
= ({Future<void> Function() initialize, LogFunction log})
A log transport (e.g., console, file, etc.)