Início rápido
Este guia mostra o fluxo mínimo: criar o logger, registrar sinks e emitir um evento.
1. Crie o logger
final logger = StructureLogger();
2. Registre sinks
Sinks definem para onde os logs vão. Para desenvolvimento local, combine saída legível no terminal com o log do desenvolvedor Dart:
logger.addSink(SimpleLineSink());
logger.addSink(DefaultSink());
3. Emita um log
await logger.log(
'Welcome {name}, your level is {level}',
level: LogLevel.info,
data: {'name': 'John Doe', 'level': 12},
);
O que acontece
StructureLoggermonta umLogModelcom timestamp ISO-8601, template, nível edata.- Cada sink registrado recebe o mesmo evento via
write(LogModel). SimpleLineSinkinterpola os placeholders e imprime uma linha legível.DefaultSinkserializa o mapa CLEF e envia paradart:developer.
Saída esperada
Welcome John Doe, your level is 12
[log] {@t: 2026-06-25T10:00:00.000, @mt: Welcome {name}, your level is {level}, @l: info, data: {name: John Doe, level: 12}}
Exemplo completo
import 'package:flutter/widgets.dart';
import 'package:structured_logger/structured_logger.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
final logger = StructureLogger();
logger.addSink(SimpleLineSink());
logger.addSink(DefaultSink());
await logger.log(
'Welcome {name}, your level is {level}',
level: LogLevel.info,
data: {'name': 'John Doe', 'level': 12},
);
}
Próximo passo
- Sinks — entenda o papel de cada destino
- Integração com Seq — envie logs para produção