41 lines
1.2 KiB
Dart
41 lines
1.2 KiB
Dart
import 'package:flutter/foundation.dart';
|
||
import 'package:logger/logger.dart';
|
||
|
||
/// 统一应用日志,提升可读性:时间戳、级别、标签、格式化输出。
|
||
/// 在 release 下仅输出 warning/error,避免泄露信息。
|
||
///
|
||
/// 使用示例:
|
||
/// final _log = AppLogger('GenerateVideo');
|
||
/// _log.d('task: $task');
|
||
/// _log.e('Generate failed', e, st);
|
||
class AppLogger {
|
||
AppLogger([this.tag = 'App']);
|
||
|
||
final String tag;
|
||
|
||
static Logger? _logger;
|
||
|
||
static Logger get _instance {
|
||
_logger ??= Logger(
|
||
printer: PrettyPrinter(
|
||
methodCount: 0,
|
||
errorMethodCount: 6,
|
||
lineLength: 80,
|
||
colors: true,
|
||
printEmojis: true,
|
||
dateTimeFormat: DateTimeFormat.onlyTimeAndSinceStart,
|
||
),
|
||
level: kReleaseMode ? Level.warning : Level.trace,
|
||
);
|
||
return _logger!;
|
||
}
|
||
|
||
String _msg(Object? message) => '[$tag] $message';
|
||
|
||
void d(Object? message) => _instance.d(_msg(message));
|
||
void i(Object? message) => _instance.i(_msg(message));
|
||
void w(Object? message) => _instance.w(_msg(message));
|
||
void e(Object? message, [Object? error, StackTrace? stackTrace]) =>
|
||
_instance.e(_msg(message), error: error, stackTrace: stackTrace);
|
||
}
|