presenton/electron/app/ipc/log_handler.ts
2026-02-20 12:02:23 +05:45

50 lines
1.5 KiB
TypeScript

import { ipcMain } from 'electron';
import * as fs from 'fs';
import * as path from 'path';
import { userDataDir } from '../utils/constants';
export function setupLogHandler() {
// Ensure logs directory exists
const logsDir = path.join(userDataDir, 'logs');
if (!fs.existsSync(logsDir)) {
fs.mkdirSync(logsDir, { recursive: true });
}
const logFilePath = path.join(logsDir, 'nextjs.log');
// Handle log writing through IPC - non-blocking
ipcMain.handle('write-nextjs-log', (_, logData: string) => {
try {
const timestamp = new Date().toISOString();
const logEntry = `[${timestamp}] ${logData}\n`;
// Use non-blocking write
fs.appendFile(logFilePath, logEntry, (err) => {
if (err) {
console.error('Error writing to log file:', err);
}
});
return { success: true };
} catch (error) {
console.error('Error in log handler:', error);
return { success: false, error: (error as Error).message };
}
});
// Handle log clearing
ipcMain.handle('clear-nextjs-logs', () => {
try {
// Create a new empty file, effectively clearing the old one
fs.writeFile(logFilePath, '', (err) => {
if (err) {
console.error('Error clearing log file:', err);
}
});
return { success: true };
} catch (error) {
console.error('Error in clear logs handler:', error);
return { success: false, error: (error as Error).message };
}
});
}