Utilities topic
Utilities
This module groups support tools from the library: integration mixin, enums, formatting helpers, extensions, and cache services.
LoggerClassMixin
Provides ready-to-use logging methods for any Dart class. It automatically fills className with host class runtimeType.
mixin LoggerClassMixin {
Type get logClassType => runtimeType;
void logDebug(String message);
void logInfo(String message);
void logWarning(String message);
void logError(String message, StackTrace stackTrace);
}
EnumLoggerType
Enum for available log severity types: error, debug, warning, info.
LoggerJsonListType
Serializable container for logs of a single EnumLoggerType with configurable capacity.
- New logs are inserted at index 0 (newest first)
- When capacity is reached, the oldest log is dropped
- Supports
DebugLog,InfoLog,WarningLog,ErrorLogdeserialization
ANSI helpers
EnumAnsiColors: foreground/background ANSI code mappingLoggerAnsiColor: callable formatter for colored strings
DateTimeLogHelper
Date formatting extension used by log rendering:
logFullDateTime→dd/MM/yyyy HH:mm:ss.SSSonlyDate()onlyTime()
StackTraceSdk
Stack trace formatting/filtering extension.
formatStackTrace(LoggerAnsiColor? color, int linesCount)stackInMap([int linesCount = 8])
ILoggerCacheRepository
Cache abstraction contract for custom storage implementations.
LoggerCacheRepositoryImpl
Default ILoggerCacheRepository implementation:
- In-memory lists grouped by
EnumLoggerType - Optional disk persistence under
<saveLogFilePath>/loggerApp/logs/<type>.json - Loads persisted logs during initialization when path is provided
LoggerPersistenceService
High-level service returned by registerLogPrinter* exposing:
addLoggetAllLogsgetLogsByTypeclearLogsclearLogsByTypequeryLogssearchLogByCreatedsearchLogByRuntimeTypesearchLogByTag
Querying logs
LogQuery combines optional type and date filters with optional sorting. The start
date is inclusive and the end date is exclusive.
final recentErrors = await persistenceService.queryLogs(
LogQuery(
types: {EnumLoggerType.error},
start: DateTime.now().subtract(const Duration(hours: 1)),
sortField: LogSortField.date,
sortDirection: SortDirection.desc,
),
);
LoggerFilter is a lower-level facade for applying a query to an existing list.
LoggerCache
Low-level disk persistence manager used by LoggerCacheRepositoryImpl.
FileManager and file operations
FileManager provides asynchronous file and directory operations. writeFile
accepts an optional FileMode (FileMode.write by default) and serializes
operations for the same path.
await FileManager().writeFile('logs.json', content, FileMode.append);
Concurrency guarantees:
- Same path operations are serialized
- Different path operations may run in parallel
Classes
- FileManager Utilities
- File manager implementation.
- IFileManagerType Utilities
- Contract for file read/write/delete operations.
- LoggerAnsiColor Utilities
- ANSI color helper for log messages.
- LoggerCacheRepositoryImpl Utilities
- Default ILoggerCacheRepository implementation with in-memory and optional file storage.
- LoggerPersistenceService Utilities
- Service for log persistence and query operations.
- StackTraceConverter Utilities
- JSON converter for StackTrace values.
Mixins
- LoggerClassMixin Utilities
- Mixin that provides convenience logging methods for classes.
Extensions
- DateTimeLoggingExtensions on DateTime Utilities
- Date/time formatting extension for log timestamps.
- LoggerEnum on LoggerObjectBase Utilities
- Maps log objects to EnumLoggerType.
Enums
- EnumLoggerType Utilities
- Supported log message types.