init<T> method
void
init<T>({
- required Stream<
T> rustLogStream, - required FrbLogRecordData mapRecord(
- T record
- bool setupDefaultOutput = true,
- void disposeRustLogger()?,
Connects a generated Rust log stream to the Dart logging package.
Implementation
void init<T>({
required Stream<T> rustLogStream,
required FrbLogRecordData Function(T record) mapRecord,
bool setupDefaultOutput = true,
void Function()? disposeRustLogger,
}) {
if (_state != null) {
throw StateError('Should not initialize FRB Dart logging twice');
}
final defaultOutputSubscription = setupDefaultOutput
? _createDefaultOutputSubscription()
: null;
final subscription = rustLogStream.listen(
(record) {
final mapped = mapRecord(record);
Logger(mapped.target).log(_toDartLevel(mapped.level), mapped.message);
},
onError: (Object error, StackTrace stackTrace) {
Logger(
'flutter_rust_bridge.logging',
).severe('Error in Rust log stream', error, stackTrace);
},
);
_state = _FrbDartLoggingState(
subscription: subscription,
defaultOutputSubscription: defaultOutputSubscription,
disposeRustLogger: disposeRustLogger,
);
}