Support-Bundle verschlankt: Item-/Package-Logs nur noch letzte 8h
Das Bundle packte bisher alle logs-Unterordner rekursiv (addDirectoryIfExists) → tausende Per-Item-Logs → 200+ MB (User-Bundle: 4273 Item-Logs, 214 MB). Zum Verschicken/Analysieren unhandlich. Neue addRecentDirectoryFiles(): packt nur Dateien mit mtime in den letzten 8h. Package-Logs und Item-Logs nutzen das 8h-Fenster; Session-Logs (wenige Dateien) weiterhin komplett. Haupt-Logs (rd_downloader.log, rename.log, audit.log, session.log, trace.log) waren schon per addFileIfExists einzeln gepackt und bleiben unveraendert. Live-Logs der aktiven Queue (laufende Session) ebenfalls komplett. Ergebnis: Bundle enthaelt alles fuer aktuelle Fehler + Rename-Probleme, aber kein Bloat durch tausende alte Item-Logs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
8870a3aeca
commit
98dc36648c
@ -51,6 +51,27 @@ function addDirectoryIfExists(zip: AdmZip, dirPath: string, zipRoot: string): vo
|
||||
}
|
||||
}
|
||||
|
||||
/** Wie addDirectoryIfExists, aber nur Dateien die in den letzten maxAgeMs ms geaendert wurden. */
|
||||
function addRecentDirectoryFiles(zip: AdmZip, dirPath: string, zipRoot: string, maxAgeMs: number): number {
|
||||
if (!fs.existsSync(dirPath)) {
|
||||
return 0;
|
||||
}
|
||||
const cutoff = Date.now() - maxAgeMs;
|
||||
let added = 0;
|
||||
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
||||
for (const entry of entries) {
|
||||
if (!entry.isFile()) continue;
|
||||
const fullPath = path.join(dirPath, entry.name);
|
||||
try {
|
||||
if (fs.statSync(fullPath).mtimeMs >= cutoff) {
|
||||
zip.addLocalFile(fullPath, zipRoot, entry.name);
|
||||
added += 1;
|
||||
}
|
||||
} catch { /* ignorieren */ }
|
||||
}
|
||||
return added;
|
||||
}
|
||||
|
||||
function formatTimestampForFileName(date: Date): string {
|
||||
const y = date.getFullYear();
|
||||
const mo = String(date.getMonth() + 1).padStart(2, "0");
|
||||
@ -164,10 +185,16 @@ export function buildSupportBundle(manager: DownloadManager, baseDir: string, op
|
||||
addFileIfExists(zip, getTraceLogPath(), "logs/trace.log");
|
||||
addFileIfExists(zip, getTraceLogPath() ? `${getTraceLogPath()}.old` : null, "logs/trace.log.old");
|
||||
|
||||
// Granulare Per-Item/-Package/-Session-Logs nur der letzten 8h.
|
||||
// Vorher wurden alle logs-Unterordner rekursiv gepackt → tausende Item-Logs
|
||||
// → 200+ MB, unhandlich zum Verschicken. Mit 8h-Fenster bleibt das Bundle
|
||||
// klein genug und enthaelt alles fuer aktuelle Fehler + Rename-Probleme.
|
||||
const SUPPORT_BUNDLE_LOG_WINDOW_MS = 8 * 60 * 60 * 1000;
|
||||
addDirectoryIfExists(zip, path.join(baseDir, "session-logs"), "logs/session-logs");
|
||||
addDirectoryIfExists(zip, path.join(baseDir, "package-logs"), "logs/package-logs");
|
||||
addDirectoryIfExists(zip, path.join(baseDir, "item-logs"), "logs/item-logs");
|
||||
addRecentDirectoryFiles(zip, path.join(baseDir, "package-logs"), "logs/package-logs", SUPPORT_BUNDLE_LOG_WINDOW_MS);
|
||||
addRecentDirectoryFiles(zip, path.join(baseDir, "item-logs"), "logs/item-logs", SUPPORT_BUNDLE_LOG_WINDOW_MS);
|
||||
|
||||
// Live-Logs der aktiven Queue (aktuelle Session) immer vollstaendig mitsichern.
|
||||
for (const packageId of packageIds) {
|
||||
addFileIfExists(zip, manager.getPackageLogPath(packageId) || getPackageLogPath(packageId), `logs/live/package-${packageId}.txt`);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user