mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
* opt: unused layout * mod: semantics * opt: DanmakuMsg type * opt: avoid cast * opt: unnecessary_lambdas * opt: use isEven * opt: logger * opt: invalid common page * tweak * opt: unify DynController
58 lines
1.4 KiB
Dart
58 lines
1.4 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:logger/logger.dart';
|
|
import 'package:path/path.dart' as p;
|
|
import 'package:path_provider/path_provider.dart';
|
|
|
|
final logger = PiliLogger();
|
|
|
|
class PiliLogger extends Logger {
|
|
PiliLogger() : super();
|
|
|
|
@override
|
|
Future<void> log(
|
|
Level level,
|
|
dynamic message, {
|
|
Object? error,
|
|
StackTrace? stackTrace,
|
|
DateTime? time,
|
|
}) async {
|
|
if (level == Level.error || level == Level.fatal) {
|
|
// 添加至文件末尾
|
|
File logFile = await LoggerUtils.getLogsPath();
|
|
logFile.writeAsString(
|
|
"**${DateTime.now()}** \n $message \n $stackTrace",
|
|
mode: FileMode.writeOnlyAppend,
|
|
);
|
|
}
|
|
super.log(level, "$message", error: error, stackTrace: stackTrace);
|
|
}
|
|
}
|
|
|
|
class LoggerUtils {
|
|
static File? _logFile;
|
|
|
|
static Future<File> getLogsPath() async {
|
|
if (_logFile != null) return _logFile!;
|
|
|
|
String dir = (await getApplicationDocumentsDirectory()).path;
|
|
final String filename = p.join(dir, ".pili_logs");
|
|
final File file = File(filename);
|
|
if (!file.existsSync()) {
|
|
await file.create(recursive: true);
|
|
}
|
|
return _logFile = file;
|
|
}
|
|
|
|
static Future<bool> clearLogs() async {
|
|
final file = await getLogsPath();
|
|
try {
|
|
await file.writeAsBytes(const [], flush: true);
|
|
} catch (e) {
|
|
// if (kDebugMode) debugPrint('Error clearing file: $e');
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|