ObservabilityConfig.fromEnvironment constructor

ObservabilityConfig.fromEnvironment([
  1. Map<String, String>? env
])

Builds a configuration by reading relevant environment variables from env or the process environment.

Implementation

factory ObservabilityConfig.fromEnvironment([Map<String, String>? env]) {
  final environment = env ?? Platform.environment;
  final interval =
      parseDuration(environment[_EnvKeys.heartbeatInterval]) ??
      const Duration(seconds: 10);
  final namespace = environment[_EnvKeys.namespace]?.trim();
  final exportersRaw = environment[_EnvKeys.metricExporters] ?? '';
  final exporters = exportersRaw
      .split(',')
      .map((entry) => entry.trim())
      .where((entry) => entry.isNotEmpty)
      .toList();
  final otlpRaw = environment[_EnvKeys.otlpEndpoint]?.trim();
  final otlp = otlpRaw != null && otlpRaw.isNotEmpty
      ? Uri.tryParse(otlpRaw)
      : null;
  final signalsEnabled = _parseBool(environment[_EnvKeys.signalsEnabled]);
  final disabledSignals = _parseList(environment[_EnvKeys.signalsDisabled]);
  final signalConfig = StemSignalConfiguration(
    enabled: signalsEnabled ?? true,
    enabledSignals: {for (final name in disabledSignals) name: false},
  );
  return ObservabilityConfig(
    heartbeatInterval: interval,
    namespace: namespace,
    metricExporters: exporters,
    otlpEndpoint: otlp,
    signalConfiguration: signalConfig,
  );
}