Impressoras de Log topic
Impressoras de Log
Este módulo implementa o padrão Strategy para a saída de logs. Cada impressora define como os logs serão formatados e enviados para o destino final (console, terminal, etc.).
LogPrinterBase
Classe abstrata que define o contrato para todas as impressoras de log.
abstract class LogPrinterBase {
const LogPrinterBase();
void printLog(LoggerObjectBase log);
}
Para criar uma impressora customizada, estenda LogPrinterBase e implemente printLog:
class MinhaImpressora extends LogPrinterBase {
const MinhaImpressora();
@override
void printLog(LoggerObjectBase log) {
// Enviar para um serviço remoto, banco de dados, etc.
myRemoteService.send(log.toJson());
}
}
Registre-a no startup:
void main() {
registerLogPrinter(
const MinhaImpressora(),
config: const ConfigLog(enableLog: true),
);
runApp(MyApp());
}
LogSimplePrint
Impressora simples sem formatação colorida. Usa print() para escrever a saída.
class LogSimplePrint extends LogPrinterBase {
const LogSimplePrint();
@override
void printLog(LoggerObjectBase log);
}
Formato de saída:
[NomeDaClasse] dd/MM/yyyy HH:mm:ss.SSS Mensagem do log
Quando usar:
- Ambientes sem suporte a ANSI (terminais básicos, CI/CD, serviços de log externos)
- Testes automatizados onde a leitura precisa ser limpa
- Produção com logs em arquivo
Exemplo:
registerLogPrinter(
const LogSimplePrint(),
config: const ConfigLog(
enableLog: true,
onlyClasses: {DebugLog, ErrorLog},
),
);
Atalho equivalente:
registerLogPrinterSimple(
config: ConfigLog(enableLog: true),
);
LogWithColorPrint
Impressora avançada com formatação colorida usando códigos ANSI. Usa dart:developer.log()
para enviar blocos formatados.
class LogWithColorPrint extends LogPrinterBase {
const LogWithColorPrint();
@override
void printLog(LoggerObjectBase log);
}
Formato de saída:
=-=-=-=-=-=-=-=-=-=-=--==-=-=-=-=-=-=-=-=-=-=-=-=-=- ← separador colorido
dd/MM/yyyy HH:mm:ss.SSS Mensagem do log ← mensagem com cor
=-=-=-=-=-=-=-=-=-=-=--==-=-=-=-=-=-=-=-=-=-=-=-=-=- ← separador colorido
O name do log enviado ao dart:developer.log é a className em maiúsculas com a cor
do tipo de log, facilitando a filtragem por origem em IDEs e visualizadores de log.
Quando usar:
- Desenvolvimento local (IDEs como VS Code e Android Studio preservam ANSI)
- Depuração visual com diferenciação por cores
- Ambientes que suportam
dart:developer
Exemplo:
registerLogPrinter(
const LogWithColorPrint(),
config: const ConfigLog(enableLog: true),
);
Atalho equivalente:
registerLogPrinterColor(
config: ConfigLog(enableLog: true),
maxLogsInCache: 200,
);
Comparativo
| Impressora | Saída | ANSI | Uso recomendado |
|---|---|---|---|
LogSimplePrint |
print() |
❌ | Testes, CI/CD, produção |
LogWithColorPrint |
dart:developer.log() |
✅ | Desenvolvimento local |
Classes
- LogPrinterBase Impressoras de Log
- Classe base abstrata para impressoras de logs.
- LogSimplePrint Impressoras de Log
- Impressora simples de logs.
- LogWithColorPrint Impressoras de Log
- Impressora de logs que preserva cor/estilo ANSI.