CherryPick lets you log all dependency injection (DI) events and errors using a flexible observer mechanism.
## Custom Observers
You can pass any implementation of `CherryPickObserver` to your root scope or any sub-scope.
This allows centralized and extensible logging, which you can direct to print, files, visualization frameworks, external loggers, or systems like [Talker](https://pub.dev/packages/talker).
### Example: Printing All Events
```dart
import 'package:cherrypick/cherrypick.dart';
void main() {
// Use the built-in PrintCherryPickObserver for console logs
final observer = PrintCherryPickObserver();
final scope = CherryPick.openRootScope(observer: observer);
For richer logging, analytics, or UI overlays, use an advanced observer such as [talker_cherrypick_logger](https://pub.dev/packages/talker_cherrypick_logger):
<!-- For richer logging, analytics, or UI overlays, use an advanced observer such as [talker_cherrypick_logger](../talker_cherrypick_logger): -->