feat(logging): add talker_dio_logger and talker_bloc_logger integration, improve cherrypick logger structure, add UI log screen for DI and network/bloc debug

This commit is contained in:
Sergey Penkovsky
2025-08-11 16:27:46 +03:00
parent d153ab4255
commit 4dc9e269cd
18 changed files with 523 additions and 55 deletions

View File

@@ -1,6 +1,17 @@
import 'package:talker_cherrypick_logger/talker_cherrypick_logger.dart';
import 'package:talker/talker.dart';
void main() {
var awesome = Awesome();
print('awesome: ${awesome.isAwesome}');
final talker = Talker();
final logger = TalkerCherryPickLogger(talker);
logger.info('Hello from CherryPickLogger!');
logger.warn('Something might be wrong...');
logger.error('Oops! An error occurred', Exception('Test error'));
// Вывод всех логов
print('\nВсе сообщения логирования через Talker:');
for (final log in talker.history) {
print(log); // Пример, либо log.toString(), либо log.message
}
}

View File

@@ -0,0 +1,24 @@
import 'package:cherrypick/cherrypick.dart';
import 'package:talker/talker.dart';
/// Реализация CherryPickLogger для логирования через Talker
class TalkerCherryPickLogger implements CherryPickLogger {
final Talker talker;
TalkerCherryPickLogger(this.talker);
@override
void info(String message) => talker.info('[CherryPick] $message');
@override
void warn(String message) => talker.warning('[CherryPick] $message');
@override
void error(String message, [Object? error, StackTrace? stackTrace]) {
talker.handle(
error ?? '[CherryPick] $message',
stackTrace,
'[CherryPick] $message',
);
}
}

View File

@@ -1,6 +0,0 @@
// TODO: Put public facing types in this file.
/// Checks if you are awesome. Spoiler: you are.
class Awesome {
bool get isAwesome => true;
}

View File

@@ -3,6 +3,6 @@
/// More dartdocs go here.
library;
export 'src/talker_cherrypick_logger_base.dart';
export 'src/talker_cherrypick_logger.dart';
// TODO: Export any libraries intended for clients of this package.

View File

@@ -8,6 +8,9 @@ environment:
# Add regular dependencies here.
dependencies:
talker: ^4.9.3
cherrypick:
path: ../cherrypick
# path: ^1.8.0
dev_dependencies:

View File

@@ -1,16 +1,40 @@
import 'package:talker_cherrypick_logger/talker_cherrypick_logger.dart';
import 'package:test/test.dart';
import 'package:talker/talker.dart';
import 'package:talker_cherrypick_logger/talker_cherrypick_logger.dart';
void main() {
group('A group of tests', () {
final awesome = Awesome();
group('TalkerCherryPickLogger', () {
late Talker talker;
late TalkerCherryPickLogger logger;
setUp(() {
// Additional setup goes here.
talker = Talker();
logger = TalkerCherryPickLogger(talker);
});
test('First Test', () {
expect(awesome.isAwesome, isTrue);
test('logs info messages correctly', () {
logger.info('Test info');
final log = talker.history.last;
expect(log.message, contains('[CherryPick] Test info'));
//xpect(log.level, TalkerLogLevel.info);
});
test('logs warning messages correctly', () {
logger.warn('Danger!');
final log = talker.history.last;
expect(log.message, contains('[CherryPick] Danger!'));
//expect(log.level, TalkerLogLevel.warning);
});
test('logs error messages correctly', () {
final error = Exception('some error');
final stack = StackTrace.current;
logger.error('ERR', error, stack);
final log = talker.history.last;
//expect(log.level, TalkerLogLevel.error);
expect(log.message, contains('[CherryPick] ERR'));
expect(log.exception, error);
expect(log.stackTrace, stack);
});
});
}