feat(logger): add extensible logging API, usage examples, and bilingual documentation

- Introduce CherryPickLogger interface, PrintLogger and SilentLogger implementations
- Add setGlobalLogger() to CherryPick API for custom DI logging
- Log key events (scope, module, error) via logger throughout DI lifecycle
- Comprehensive comments and code documentation in both English and Russian
- Document usage of logging system in quick_start and full_tutorial documentation (EN/RU)
- Provide usage examples in docs and code comments
- No logging inside GlobalCycleDetectionMixin (design choice: exceptions handled at Scope, not detector/mixin level) and detailed architectural reasoning
- Update helper.dart, logger.dart: comments, examples, API doc improvements
BREAKING CHANGE: Projects can now inject any logger via CherryPick.setGlobalLogger; default log behavior clarified and docstrings/usage examples enhanced
This commit is contained in:
Sergey Penkovsky
2025-08-08 08:13:58 +03:00
parent 41d49e98d0
commit aa97632add
16 changed files with 492 additions and 29 deletions

View File

@@ -0,0 +1,16 @@
import 'package:cherrypick/cherrypick.dart';
class MockLogger implements CherryPickLogger {
final List<String> infos = [];
final List<String> warns = [];
final List<String> errors = [];
@override
void info(String message) => infos.add(message);
@override
void warn(String message) => warns.add(message);
@override
void error(String message, [Object? e, StackTrace? s]) =>
errors.add(
'$message${e != null ? ' $e' : ''}${s != null ? '\n$s' : ''}');
}