Logging no console
Durante o desenvolvimento, a combinação de SimpleLineSink e DefaultSink cobre a maioria dos casos.
Configuração recomendada
import 'package:flutter/foundation.dart';
import 'package:structured_logger/structured_logger.dart';
final logger = StructureLogger();
void setupLogging() {
if (kDebugMode) {
logger.addSink(SimpleLineSink());
logger.addSink(DefaultSink());
}
}
- SimpleLineSink — leitura rápida no terminal (
flutter run). - DefaultSink — inspeção no Flutter DevTools e no painel de logs do IDE.
Níveis de log
Use LogLevel para classificar eventos:
await logger.log('App started', level: LogLevel.info);
await logger.log('Cache miss for {key}', level: LogLevel.debug, data: {'key': 'user_prefs'});
await logger.log('Retry {attempt} of {max}', level: LogLevel.warning, data: {'attempt': 2, 'max': 5});
await logger.log('Request failed: {error}', level: LogLevel.error, data: {'error': 'timeout'});
await logger.log('Frame {n} rendered', level: LogLevel.verbose, data: {'n': 1204});
| Nível | Uso típico |
|---|---|
verbose | Traço fino, alto volume |
debug | Diagnóstico de desenvolvimento |
info | Fluxo normal da aplicação |
warning | Situação recuperável ou inesperada |
error | Falha que merece atenção |
Dicas
- Registre sinks uma vez na inicialização do app (por exemplo, em
main()apósWidgetsFlutterBinding.ensureInitialized()). - Em builds de release, considere remover
SimpleLineSinkpara evitarprintem produção. - Para produção, prefira
SinkSeqou um sink customizado que envie para seu backend de observabilidade.