Observability Flutter

Uma biblioteca de observabilidade para Flutter que permite adicionar logs, erros, transações e breadcrumbs de forma unificada.

Features

  • 📝 Logs com níveis (debug, info, warning, error)
  • 🔴 Captura de erros e exceções
  • 📊 Transações para medir performance
  • 🍞 Breadcrumbs para rastrear ações do usuário
  • 🔌 Suporte a múltiplos providers personalizados
  • 🏭 Registry para auto-discovery de providers

Getting started

Adicione ao seu pubspec.yaml:

dependencies:
  observability_flutter: ^1.0.0

Usage

Inicialização com providers customizados

import 'package:observability_flutter/observability_flutter.dart';

// Crie seu próprio provider extendendo ObservabilityService
class MyCustomObservabilityService extends ObservabilityService {
  // Implemente os métodos necessários...
}

// Inicialize com suas instâncias
await ObservabilityManager.instance.initialize(
  providers: [
    DebugObservabilityService(),  // Provider built-in
    MyCustomObservabilityService(), // Seu provider customizado
  ],
);

// Use em qualquer lugar
ObservabilityManager.instance.logMessage('Hello!');
ObservabilityManager.instance.recordError(error, stackTrace: stackTrace);

Usando o Registry (opcional)

Se preferir usar o sistema de registry para auto-discovery:

// Registre seus providers
ObservabilityProviderRegistry.register(
  'my-provider',
  (config) => MyCustomObservabilityService(config: config),
);

// Inicialize via registry
await ObservabilityManager.instance.initializeFromRegistry(
  providerKeys: ['debug', 'my-provider'],
  configs: {
    'my-provider': {'apiKey': 'xxx'},
  },
);

Criando um provider customizado

class SentryObservabilityService extends ObservabilityService {
  @override
  Future<void> initialize() async {
    // Inicialize o Sentry
  }

  @override
  void logMessage(String message, {LogLevel level = LogLevel.info, ...}) {
    // Envie para o Sentry
  }

  @override
  void recordError(dynamic error, {StackTrace? stackTrace, ...}) {
    // Capture a exceção no Sentry
  }
  
  // ... implemente os demais métodos
}

Additional information

Para mais informações sobre como criar providers customizados, consulte a documentação da classe ObservabilityService.