Core - Sistema de Logging topic
Core — Sistema de Logging
Este módulo define os tipos fundamentais e a infraestrutura de injeção de dependência da biblioteca.
LoggerObject
Classe selada (sealed) que serve como marcador base da hierarquia de tipos de log.
sealed class LoggerObject {}
Não possui membros próprios. Sua existência garante que apenas os tipos definidos nesta biblioteca
(DebugLog, InfoLog, WarningLog, ErrorLog) possam estender a hierarquia, permitindo
pattern matching exhaustivo em switch expressions.
LoggerObjectBase
Classe abstrata que define o contrato completo para objetos de log.
abstract class LoggerObjectBase extends LoggerObject {
final String message;
final String tag;
DateTime logCreationDate;
late String className;
}
Campos principais
| Campo | Tipo | Descrição |
|---|---|---|
message |
String |
Mensagem principal do log |
tag |
String |
Tag opcional para categorização |
logCreationDate |
DateTime |
Timestamp de criação (padrão: DateTime.now()) |
className |
String |
Nome da classe/origem que emitiu o log |
Métodos
getColor()— Retorna a cor ANSI do tipo de log. Implementado por cada subclasse.getMessage([bool withColor])— Retorna a mensagem formatada com timestamp, com ou sem cor ANSI.getStartLog([bool withColor])— Retorna o cabeçalho do log (tipo + origem) formatado.sendLog()— Envia o log aoLogPrinterServiceregistrado viaget_it.toJson()— Serializa o objeto para JSON.alwaysPrint— Propriedadeboolque, quandotrue, faz o log ser processado mesmo comConfigLog.enableLog = false. Padrão:false.ErrorLogsobrescreve paratrue.
Validações
O construtor valida em modo de desenvolvimento via assert que a mensagem não está vazia nem contém apenas espaços em branco.
LogPrinterService
Serviço central que coordena a impressão e o armazenamento de logs.
final class LogPrinterService {
final LogPrinterBase logPrinter;
LoggerPersistenceService get cacheRepository;
void executePrint(LoggerObjectBase log);
}
Este serviço é registrado como singleton no get_it por registerLogPrinter. Ele aplica as regras de ConfigLog
e, quando um log deve ser processado, delega para logPrinter.printLog() e cacheRepository.addLog().
Regras de processamento em executePrint:
- Se
enableLogétruee o tipo do log está emonlyClasses(ouonlyClassesestá vazio) → imprime e salva no cache. - Se
log.alwaysPrintétrue→ imprime e salva no cache independentemente das regras acima. - Caso contrário → o log é descartado silenciosamente.
fetchLogPrinterService
Função interna que resolve o LogPrinterService registrado no get_it.
LogPrinterService fetchLogPrinterService();
Lança StateError se registerLogPrinter não tiver sido chamado antes do primeiro uso.
registerLogPrinter
Registra a impressora principal no get_it. Deve ser chamada no startup da aplicação,
antes de qualquer uso de logs.
LoggerPersistenceService registerLogPrinter(
LogPrinterBase printer, {
ILoggerCacheRepository? cacheRepository,
required ConfigLog config,
});
Retorna o LoggerPersistenceService associado ao serviço registrado, para que o chamador
possa consultar e gerenciar os logs em cache/persistência.
Atalhos de registro:
// Com formatação ANSI colorida (recomendado para desenvolvimento)
LoggerPersistenceService registerLogPrinterColor({
ConfigLog? config,
int maxLogsInCache = 100,
String? cacheFilePath,
FileType fileType = FileType.json,
});
// Sem cores, usando debugPrint (útil em CI/CD ou consoles sem ANSI)
LoggerPersistenceService registerLogPrinterSimple({
ConfigLog? config,
int maxLogsInCache = 100,
String? cacheFilePath,
FileType fileType = FileType.json,
});
Exemplo de configuração no startup
void main() {
// Desenvolvimento — logs coloridos, cache em memória
final cache = registerLogPrinterColor(
config: ConfigLog(enableLog: true),
);
// Produção — sem cores, apenas erros, cache com persistência em arquivo
// final cache = registerLogPrinterSimple(
// config: ConfigLog(enableLog: false),
// cacheFilePath: '/caminho/para/logs',
// );
runApp(MyApp());
}
Exemplo em testes
setUp(() {
registerLogPrinter(
const LogSimplePrint(),
config: const ConfigLog(enableLog: true),
);
});
tearDown(() async => await GetIt.instance.reset());
Libraries
- log_custom_printer Core - Sistema de Logging
- Biblioteca de logging customizada para Dart/Flutter.
Classes
- ILoggerCacheRepository Core - Sistema de Logging
- Contrato para persistência e consulta de logs.
- LoggerObject Core - Sistema de Logging
- Marca base para objetos de log.
- LoggerObjectBase Core - Sistema de Logging
- Contrato base para objetos de log que podem ser impressos/serializados.
- LogPrinterService Core - Sistema de Logging
- Serviço central que coordena o processo de impressão e armazenamento de logs.
Functions
-
fetchLogPrinterService(
) → LogPrinterService Core - Sistema de Logging - Resolve o LogPrinterService registrado no get_it.
-
registerLogPrinter(
LogPrinterBase printer, {required ConfigLog config, ILoggerCacheRepository? cacheRepository}) → LoggerPersistenceService Core - Sistema de Logging - Registra o LogPrinterBase no get_it para injeção de dependência.
-
registerLogPrinterColor(
{ConfigLog? config, int maxLogsInCache = 100, String? cacheFilePath, FileType fileType = FileType.json}) → LoggerPersistenceService Core - Sistema de Logging - Registra uma impressora com formatação colorida.
-
registerLogPrinterSimple(
{ConfigLog? config, int maxLogsInCache = 100, String? cacheFilePath, FileType fileType = FileType.json}) → LoggerPersistenceService Core - Sistema de Logging - Registra uma impressora simples (sem cores).
Enums
- ExportFormat Core - Sistema de Logging
- Formato de exportação de logs.