improve log cleaning

This commit is contained in:
otsmr 2026-04-05 22:06:08 +02:00
parent 6cc2ad3a65
commit 2d5f004222

View file

@ -126,17 +126,34 @@ Future<void> cleanLogFile() async {
return _protectFileAccess(() async {
final logFile = File('$globalApplicationSupportDirectory/app.log');
if (logFile.existsSync()) {
final lines = await logFile.readAsLines();
if (lines.length <= 100000) return;
final removeCount = lines.length - 100000;
final remaining = lines.sublist(removeCount, lines.length);
final sink = logFile.openWrite()..writeAll(remaining, '\n');
await sink.close();
if (!logFile.existsSync()) {
return;
}
final lines = await logFile.readAsLines();
final twoWeekAgo = clock.now().subtract(const Duration(days: 14));
var keepStartIndex = -1;
for (var i = 0; i < lines.length; i += 100) {
if (lines[i].length >= 19) {
final date = DateTime.tryParse(lines[i].substring(0, 19));
if (date != null && date.isAfter(twoWeekAgo)) {
keepStartIndex = i;
break;
}
}
}
if (keepStartIndex == 0) return;
if (keepStartIndex == -1) {
await logFile.writeAsString('');
return;
}
final remaining = lines.sublist(keepStartIndex);
final sink = logFile.openWrite()..writeAll(remaining, '\n');
await sink.close();
});
}