otel_get_it 0.1.0-beta.1
otel_get_it: ^0.1.0-beta.1 copied to clipboard
OpenTelemetry instrumentation for `package:get_it`. Wraps async singleton registration and lookup with spans so DI bootstrap cost is visible in your traces.
dartastic_get_it_otel #
OpenTelemetry instrumentation for
package:get_it.
final getIt = GetIt.instance;
// App startup: track DI bootstrap cost
getIt.tracedRegisterSingletonAsync<DatabaseService>(() async {
return DatabaseService(await openDatabase('app.db'));
});
getIt.tracedRegisterSingletonAsync<AuthService>(() async {
return AuthService(await FirebaseAuth.instance);
});
await getIt.tracedAllReady();
// Test teardown / hot reload
await getIt.tracedReset();
Spans:
get_it register_async DatabaseService— covers the async factory's run time, parented to whatever span you're inget_it all_ready GetIt— the total bootstrap waitget_it reset GetItget_it get_async <T>— forgetAsync<T>()resolutionget_it unregister <T>
All carry di.system = get_it, di.operation, di.type.
Why no sync get<T>() wrap? #
Synchronous resolution is sub-microsecond on the hot path. A
span per getIt<Foo>() would produce gigabytes of low-value
trace data. Use the async variants when you want visibility, or
wrap individual call sites yourself if you have a specific
service whose lookup cost matters.
Suppression: runWithoutGetItInstrumentationAsync.
License #
Apache 2.0