mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-09 04:41:19 -07:00
feat: implement background process logging and cleanup (#21189)
This commit is contained in:
66
packages/cli/src/utils/logCleanup.ts
Normal file
66
packages/cli/src/utils/logCleanup.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2026 Google LLC
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import { promises as fs } from 'node:fs';
|
||||
import * as path from 'node:path';
|
||||
import { ShellExecutionService, debugLogger } from '@google/gemini-cli-core';
|
||||
|
||||
const RETENTION_PERIOD_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
|
||||
|
||||
/**
|
||||
* Cleans up background process log files older than 7 days.
|
||||
* Scans ~/.gemini/tmp/background-processes/ for .log files.
|
||||
*
|
||||
* @param debugMode Whether to log detailed debug information.
|
||||
*/
|
||||
export async function cleanupBackgroundLogs(
|
||||
debugMode: boolean = false,
|
||||
): Promise<void> {
|
||||
try {
|
||||
const logDir = ShellExecutionService.getLogDir();
|
||||
|
||||
// Check if the directory exists
|
||||
try {
|
||||
await fs.access(logDir);
|
||||
} catch {
|
||||
// Directory doesn't exist, nothing to clean up
|
||||
return;
|
||||
}
|
||||
|
||||
const entries = await fs.readdir(logDir, { withFileTypes: true });
|
||||
const now = Date.now();
|
||||
let deletedCount = 0;
|
||||
|
||||
for (const entry of entries) {
|
||||
if (entry.isFile() && entry.name.endsWith('.log')) {
|
||||
const filePath = path.join(logDir, entry.name);
|
||||
try {
|
||||
const stats = await fs.stat(filePath);
|
||||
if (now - stats.mtime.getTime() > RETENTION_PERIOD_MS) {
|
||||
await fs.unlink(filePath);
|
||||
deletedCount++;
|
||||
}
|
||||
} catch (error) {
|
||||
if (debugMode) {
|
||||
debugLogger.debug(
|
||||
`Failed to process log file ${entry.name}:`,
|
||||
error,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (deletedCount > 0 && debugMode) {
|
||||
debugLogger.debug(`Cleaned up ${deletedCount} expired background logs.`);
|
||||
}
|
||||
} catch (error) {
|
||||
// Best-effort cleanup, don't let it crash the CLI
|
||||
if (debugMode) {
|
||||
debugLogger.warn('Background log cleanup failed:', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user