refac: logging

This commit is contained in:
Timothy Jaeryang Baek
2025-07-29 13:23:30 +04:00
parent ffbbb8f5b2
commit aeba0e7c22
2 changed files with 28 additions and 14 deletions
+7 -4
View File
@@ -16,12 +16,9 @@ import {
} from "electron";
import path, { join } from "path";
import { electronApp, optimizer, is } from "@electron-toolkit/utils";
import log from "electron-log";
import icon from "../../resources/icon.png?asset";
import trayIconImage from "../../resources/assets/tray.png?asset";
import {
getLogFilePath,
checkUrlAndOpen,
getConfig,
getServerLog,
@@ -38,6 +35,12 @@ import {
uninstallPython,
} from "./utils";
import log from "electron-log";
log.transports.file.resolvePathFn = () => getLogFilePath("main");
import icon from "../../resources/icon.png?asset";
import trayIconImage from "../../resources/assets/tray.png?asset";
// Main application logic
let mainWindow: BrowserWindow | null = null;
let tray: Tray | null = null;
+21 -10
View File
@@ -12,6 +12,18 @@ import { app, shell, Notification } from "electron";
import { execFileSync, exec, spawn, execSync, execFile } from "child_process";
import log from "electron-log";
log.transports.file.resolvePathFn = () => getLogFilePath("main");
const serverLogger = log.create({ logId: "server" });
serverLogger.transports.file.resolvePath = () => getLogFilePath(`server`);
export const getLogFilePath = (name: string = "main"): string => {
const logDir = path.join(getUserDataPath(), "logs");
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
return path.join(logDir, `${name}.log`);
};
export const getAppPath = (): string => {
let appPath = app.getAppPath();
@@ -691,24 +703,23 @@ export const startServer = async (
const appendLog = (source: string) => (data: Buffer) => {
const logLine = data.toString().trim();
const tag = `[${source}][PID:${childProcess.pid}]:`;
logLines.push(`${tag} ${logLine}`);
// (Optional) also log to main process console
// log.info(`${tag} ${logLine}`);
const line = `[${source}][PID:${childProcess.pid}]: ${logLine}`;
logLines.push(line);
serverLogger.info(line); // Log to console
};
childProcess.stdout?.on("data", appendLog("stdout"));
childProcess.stderr?.on("data", appendLog("stderr"));
childProcess.on("close", (code, signal) => {
logLines.push(
`[process][PID:${childProcess.pid}] Exited with code ${code} signal ${signal}`
);
const line = `[process][PID:${childProcess.pid}] Exited with code ${code} signal ${signal}`;
serverLogger.info(line);
logLines.push(line);
serverPIDs.delete(childProcess.pid);
// Note: we keep the logs available until manually cleared
});
childProcess.on("error", (err) => {
logLines.push(
`[process][PID:${childProcess.pid}] Error: ${err.message}`
);
const line = `[process][PID:${childProcess.pid}] Error: ${err.message}`;
serverLogger.error(line);
logLines.push(line);
});
// Compute URL directly, do not try to parse logs