android10 / frodo

Android Library for Logging RxJava Observables and Subscribers.
1.48k stars 101 forks source link

RxLogSubscriber for subjects or hot observable #24

Open emakar opened 8 years ago

emakar commented 8 years ago

Currently logging shared hot observable or subject via RxLogObservable could result in unreadable log:

Assume we have a subject returned as observable and we just want to log its emission (and possibly - subscribers count) Currently it's only possible to annotate a method with RxLogObservable

BehaviorSubject bus = BehaviorSubject.create();

@RxLogObservable Observable bus() {
  return bus.asObservable();
}
...
bus.onNext(theEvent);
...
Subscription subscription1 = bus().subscribe()
...
Subscription subscriptionN = bus().subscribe()

And for each Subscriber we'll have a log entry per emission/completion/error, entries are equal though

Frodo => [@Observable#bus() -> onNext() -> theEvent]  // <-- subscription1
...
Frodo => [@Observable#bus() -> onNext() -> theEvent]  // <-- subscriptionN

RxLogObservable is a neat way for logging observables, however it makes logs totally unreadable if one has several subjects and subscribers for them.

So it would be cool to enhance existent annotation or add a new one to log only subject's (subscriber's) onNext/etc (It seems more natural to log subjects as RxLogSubscriber since we're essentially interested in its onNext invocations, however we cannot annotate single instance with it, it's applicable for class only)

android10 commented 7 years ago

Sorry for the late reply but I will take all this feedback for the next version of frodo.