Merge pull request #105 from ente-io/add-more-logs

Add process stats logs
This commit is contained in:
Abhinav Kumar 2022-11-23 20:25:23 +05:30 committed by GitHub
commit 00bb606c0a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 64 additions and 3 deletions

View file

@ -13,9 +13,12 @@ import {
enableSharedArrayBufferSupport,
handleDockIconHideOnAutoLaunch,
handleUpdates,
logSystemInfo,
} from './utils/main';
import { initSentry } from './services/sentry';
import { setupLogging } from './utils/logging';
import { isDev } from './utils/common';
import { setupMainProcessStatsLogger } from './utils/processStats';
let mainWindow: BrowserWindow;
@ -42,7 +45,7 @@ setupMainHotReload();
setupNextElectronServe();
setupLogging();
setupLogging(isDev);
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
@ -65,6 +68,8 @@ if (!gotTheLock) {
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', async () => {
logSystemInfo();
setupMainProcessStatsLogger();
initSentry();
mainWindow = await createWindow();
const tray = setupTrayItem(mainWindow);

View file

@ -50,10 +50,12 @@ import { fixHotReloadNext12 } from './utils/preload';
import { isFolder, getDirFiles } from './api/fs';
import { convertHEIC } from './api/heicConvert';
import { setupLogging } from './utils/logging';
import { setupRendererProcessStatsLogger } from './utils/processStats';
import { runFFmpegCmd } from './api/ffmpeg';
fixHotReloadNext12();
setupLogging();
setupRendererProcessStatsLogger();
const windowObject: any = window;

View file

@ -8,6 +8,7 @@ import { getSkipAppVersion, setSkipAppVersion } from './userPreference';
import fetch from 'node-fetch';
import { isPlatformMac } from '../utils/main';
import { logErrorSentry } from './sentry';
import ElectronLog from 'electron-log';
const FIVE_MIN_IN_MICROSECOND = 5 * 60 * 1000;
@ -83,6 +84,7 @@ export async function checkForUpdateAndNotify(mainWindow: BrowserWindow) {
}
export function updateAndRestart() {
ElectronLog.log('user quit the app');
setIsAppQuitting(true);
autoUpdater.quitAndInstall();
}

View file

@ -1,10 +1,12 @@
import log from 'electron-log';
import { LOG_FILENAME, MAX_LOG_SIZE } from '../config';
export function setupLogging() {
export function setupLogging(isDev?: boolean) {
log.transports.file.fileName = LOG_FILENAME;
log.transports.file.maxSize = MAX_LOG_SIZE;
log.transports.console.level = false;
if (!isDev) {
log.transports.console.level = false;
}
log.transports.file.format =
'[{y}-{m}-{d}T{h}:{i}:{s}{z}] [{level}]{scope} {text}';
}

View file

@ -12,6 +12,8 @@ import {
checkForUpdateAndNotify,
setupAutoUpdater,
} from '../services/appUpdater';
import ElectronLog from 'electron-log';
import os from 'os';
export function handleUpdates(mainWindow: BrowserWindow) {
if (!isDev) {
@ -102,3 +104,10 @@ export async function handleDockIconHideOnAutoLaunch() {
export function enableSharedArrayBufferSupport() {
app.commandLine.appendSwitch('enable-features', 'SharedArrayBuffer');
}
export function logSystemInfo() {
const systemVersion = process.getSystemVersion();
const osName = process.platform;
const osRelease = os.release();
ElectronLog.info({ osName, osRelease, systemVersion });
}

View file

@ -12,6 +12,7 @@ import {
import { setIsAppQuitting } from '../main';
import autoLauncher from '../services/autoLauncher';
import { isPlatformMac } from './main';
import ElectronLog from 'electron-log';
export function buildContextMenu(
mainWindow: BrowserWindow,
@ -76,6 +77,7 @@ export function buildContextMenu(
{
label: 'Quit ente',
click: function () {
ElectronLog.log('user quit the app');
setIsAppQuitting(true);
app.quit();
},

39
src/utils/processStats.ts Normal file
View file

@ -0,0 +1,39 @@
import ElectronLog from 'electron-log';
import { webFrame } from 'electron/renderer';
const FIVE_MINUTES_IN_MICROSECONDS = 30 * 1000;
async function logMainProcessStats() {
const systemMemoryInfo = process.getSystemMemoryInfo();
const cpuUsage = process.getCPUUsage();
const processMemoryInfo = await process.getProcessMemoryInfo();
const heapStatistics = process.getHeapStatistics();
ElectronLog.log('main process stats', {
systemMemoryInfo,
cpuUsage,
processMemoryInfo,
heapStatistics,
});
}
async function logRendererProcessStats() {
const blinkMemoryInfo = process.getBlinkMemoryInfo();
const heapStatistics = process.getHeapStatistics();
const processMemoryInfo = process.getProcessMemoryInfo();
const webFrameResourceUsage = webFrame.getResourceUsage();
ElectronLog.log('renderer process stats', {
blinkMemoryInfo,
heapStatistics,
processMemoryInfo,
webFrameResourceUsage,
});
}
export function setupMainProcessStatsLogger() {
setInterval(logMainProcessStats, FIVE_MINUTES_IN_MICROSECONDS);
}
export function setupRendererProcessStatsLogger() {
setInterval(logRendererProcessStats, FIVE_MINUTES_IN_MICROSECONDS);
}