mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-08-07 05:32:26 -04:00
scaffolding
This commit is contained in:
parent
6def7a9eee
commit
c22d6fcff8
21 changed files with 1037 additions and 117 deletions
105
lib/log/loggy.dart
Normal file
105
lib/log/loggy.dart
Normal file
|
@ -0,0 +1,105 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:loggy/loggy.dart';
|
||||
import 'package:ansicolor/ansicolor.dart';
|
||||
|
||||
// Loggy tools
|
||||
const LogLevel traceLevel = LogLevel('Trace', 1);
|
||||
|
||||
String wrapWithLogColor(LogLevel? level, String text) {
|
||||
if (level == null) {
|
||||
return text;
|
||||
}
|
||||
final pen = AnsiPen();
|
||||
ansiColorDisabled = false;
|
||||
switch (level) {
|
||||
case LogLevel.error:
|
||||
pen
|
||||
..reset()
|
||||
..red(bold: true);
|
||||
return pen(text);
|
||||
case LogLevel.warning:
|
||||
pen
|
||||
..reset()
|
||||
..yellow(bold: true);
|
||||
return pen(text);
|
||||
case LogLevel.info:
|
||||
pen
|
||||
..reset()
|
||||
..white(bold: true);
|
||||
return pen(text);
|
||||
case LogLevel.debug:
|
||||
pen
|
||||
..reset()
|
||||
..green(bold: true);
|
||||
return pen(text);
|
||||
case traceLevel:
|
||||
pen
|
||||
..reset()
|
||||
..blue(bold: true);
|
||||
return pen(text);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
extension PrettyPrintLogRecord on LogRecord {
|
||||
String pretty() {
|
||||
final lstr =
|
||||
wrapWithLogColor(level, '[${level.toString().substring(0, 1)}]');
|
||||
return '$lstr $message';
|
||||
}
|
||||
}
|
||||
|
||||
class CallbackPrinter extends LoggyPrinter {
|
||||
CallbackPrinter() : super();
|
||||
|
||||
void Function(LogRecord)? callback;
|
||||
|
||||
@override
|
||||
void onLog(LogRecord record) {
|
||||
debugPrint(record.pretty());
|
||||
callback?.call(record);
|
||||
}
|
||||
|
||||
void setCallback(Function(LogRecord)? cb) {
|
||||
callback = cb;
|
||||
}
|
||||
}
|
||||
|
||||
var globalTerminalPrinter = CallbackPrinter();
|
||||
|
||||
extension TraceLoggy on Loggy {
|
||||
void trace(dynamic message, [Object? error, StackTrace? stackTrace]) =>
|
||||
this.log(traceLevel, message, error, stackTrace);
|
||||
}
|
||||
|
||||
LogOptions getLogOptions(LogLevel? level) {
|
||||
return LogOptions(
|
||||
level ?? LogLevel.all,
|
||||
stackTraceLevel: LogLevel.error,
|
||||
);
|
||||
}
|
||||
|
||||
class RootLoggy implements LoggyType {
|
||||
@override
|
||||
Loggy<RootLoggy> get loggy => Loggy<RootLoggy>('');
|
||||
}
|
||||
|
||||
Loggy get log => Loggy<RootLoggy>('');
|
||||
|
||||
void initLoggy() {
|
||||
Loggy.initLoggy(
|
||||
logPrinter: globalTerminalPrinter,
|
||||
logOptions: getLogOptions(null),
|
||||
);
|
||||
|
||||
const isTrace = String.fromEnvironment("logTrace", defaultValue: "") != "";
|
||||
LogLevel logLevel;
|
||||
if (isTrace) {
|
||||
logLevel = traceLevel;
|
||||
} else {
|
||||
logLevel = kDebugMode ? LogLevel.debug : LogLevel.info;
|
||||
}
|
||||
|
||||
Loggy('').level = getLogOptions(logLevel);
|
||||
}
|
21
lib/log/state_logger.dart
Normal file
21
lib/log/state_logger.dart
Normal file
|
@ -0,0 +1,21 @@
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'loggy.dart';
|
||||
|
||||
class StateLogger extends ProviderObserver {
|
||||
const StateLogger();
|
||||
@override
|
||||
void didUpdateProvider(
|
||||
ProviderBase provider,
|
||||
Object? previousValue,
|
||||
Object? newValue,
|
||||
ProviderContainer container,
|
||||
) {
|
||||
log.debug('''{
|
||||
provider: ${provider.name ?? provider.runtimeType},
|
||||
oldValue: $previousValue,
|
||||
newValue: $newValue
|
||||
}
|
||||
''');
|
||||
super.didUpdateProvider(provider, previousValue, newValue, container);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue