Skip to content

Commit 961616b

Browse files
authored
Rotate main.log file to make it easier to debug user sessions. (#1056)
Also fixed a bug where if the browser webContent is destroyed already, we should not send the event. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-1056-Rotate-main-log-file-to-make-it-easier-to-debug-user-sessions-1b56d73d36508126b17cc2f217b1e806) by [Unito](https://www.unito.io)
1 parent 32ddf43 commit 961616b

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

src/main-process/appWindow.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,11 @@ export class AppWindow {
357357
const message = this.messageQueue.shift();
358358
if (message) {
359359
log.info('Sending queued message', message);
360-
this.window.webContents.send(message.channel, message.data);
360+
if (this.window.webContents.isDestroyed()) {
361+
log.warn('Window is destroyed, cannot send message', message);
362+
} else {
363+
this.window.webContents.send(message.channel, message.data);
364+
}
361365
}
362366
}
363367
});

src/main-process/comfyServer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class ComfyServer implements HasTelemetry {
122122

123123
ComfySettings.lockWrites();
124124
await ComfyServerConfig.addAppBundledCustomNodesToConfig();
125-
await rotateLogFiles(app.getPath('logs'), 'comfyui', 50);
125+
await rotateLogFiles(app.getPath('logs'), LogFile.ComfyUI, 50);
126126
return new Promise<void>((resolve, reject) => {
127127
const comfyUILog = log.create({ logId: 'comfyui' });
128128
comfyUILog.transports.file.fileName = LogFile.ComfyUI;

src/main.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import { app, shell } from 'electron';
44
import { LevelOption } from 'electron-log';
55
import log from 'electron-log/main';
66

7+
import { LogFile } from './constants';
78
import { DesktopApp } from './desktopApp';
89
import { removeAnsiCodesTransform, replaceFileLoggingTransform } from './infrastructure/structuredLogging';
910
import { initializeAppState } from './main-process/appState';
1011
import { DevOverrides } from './main-process/devOverrides';
1112
import SentryLogging from './services/sentry';
1213
import { getTelemetry } from './services/telemetry';
1314
import { DesktopConfig } from './store/desktopConfig';
15+
import { rotateLogFiles } from './utils';
1416

1517
// Synchronous pre-start configuration
1618
dotenv.config();
@@ -41,8 +43,8 @@ if (!gotTheLock) {
4143
async function startApp() {
4244
// Wait for electron app ready event
4345
await new Promise<void>((resolve) => app.once('ready', () => resolve()));
46+
await rotateLogFiles(app.getPath('logs'), LogFile.Main, 50);
4447
log.debug('App ready');
45-
4648
telemetry.registerHandlers();
4749
telemetry.track('desktop:app_ready');
4850

src/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,13 @@ export function findAvailablePort(host: string, startPort: number, endPort: numb
9393
* @param maxFiles The maximum number of log files to keep. When 0, no files are removed. Default: 50
9494
*/
9595
export async function rotateLogFiles(logDir: string, baseName: string, maxFiles = 50) {
96-
const currentLogPath = path.join(logDir, `${baseName}.log`);
96+
const currentLogPath = path.join(logDir, `${baseName}`);
9797

9898
try {
9999
await fsPromises.access(logDir, fs.constants.R_OK | fs.constants.W_OK);
100100
await fsPromises.access(currentLogPath);
101101
} catch {
102-
log.error('Log rotation: cannot access log dir.');
102+
log.error('Log rotation: cannot access log dir', currentLogPath);
103103
// TODO: Report to user
104104
return;
105105
}

0 commit comments

Comments
 (0)