Merge pull request #105 from ente-io/add-more-logs
Add process stats logs
This commit is contained in:
commit
00bb606c0a
|
@ -13,9 +13,12 @@ import {
|
||||||
enableSharedArrayBufferSupport,
|
enableSharedArrayBufferSupport,
|
||||||
handleDockIconHideOnAutoLaunch,
|
handleDockIconHideOnAutoLaunch,
|
||||||
handleUpdates,
|
handleUpdates,
|
||||||
|
logSystemInfo,
|
||||||
} from './utils/main';
|
} from './utils/main';
|
||||||
import { initSentry } from './services/sentry';
|
import { initSentry } from './services/sentry';
|
||||||
import { setupLogging } from './utils/logging';
|
import { setupLogging } from './utils/logging';
|
||||||
|
import { isDev } from './utils/common';
|
||||||
|
import { setupMainProcessStatsLogger } from './utils/processStats';
|
||||||
|
|
||||||
let mainWindow: BrowserWindow;
|
let mainWindow: BrowserWindow;
|
||||||
|
|
||||||
|
@ -42,7 +45,7 @@ setupMainHotReload();
|
||||||
|
|
||||||
setupNextElectronServe();
|
setupNextElectronServe();
|
||||||
|
|
||||||
setupLogging();
|
setupLogging(isDev);
|
||||||
|
|
||||||
const gotTheLock = app.requestSingleInstanceLock();
|
const gotTheLock = app.requestSingleInstanceLock();
|
||||||
if (!gotTheLock) {
|
if (!gotTheLock) {
|
||||||
|
@ -65,6 +68,8 @@ if (!gotTheLock) {
|
||||||
// initialization and is ready to create browser windows.
|
// initialization and is ready to create browser windows.
|
||||||
// Some APIs can only be used after this event occurs.
|
// Some APIs can only be used after this event occurs.
|
||||||
app.on('ready', async () => {
|
app.on('ready', async () => {
|
||||||
|
logSystemInfo();
|
||||||
|
setupMainProcessStatsLogger();
|
||||||
initSentry();
|
initSentry();
|
||||||
mainWindow = await createWindow();
|
mainWindow = await createWindow();
|
||||||
const tray = setupTrayItem(mainWindow);
|
const tray = setupTrayItem(mainWindow);
|
||||||
|
|
|
@ -50,10 +50,12 @@ import { fixHotReloadNext12 } from './utils/preload';
|
||||||
import { isFolder, getDirFiles } from './api/fs';
|
import { isFolder, getDirFiles } from './api/fs';
|
||||||
import { convertHEIC } from './api/heicConvert';
|
import { convertHEIC } from './api/heicConvert';
|
||||||
import { setupLogging } from './utils/logging';
|
import { setupLogging } from './utils/logging';
|
||||||
|
import { setupRendererProcessStatsLogger } from './utils/processStats';
|
||||||
import { runFFmpegCmd } from './api/ffmpeg';
|
import { runFFmpegCmd } from './api/ffmpeg';
|
||||||
|
|
||||||
fixHotReloadNext12();
|
fixHotReloadNext12();
|
||||||
setupLogging();
|
setupLogging();
|
||||||
|
setupRendererProcessStatsLogger();
|
||||||
|
|
||||||
const windowObject: any = window;
|
const windowObject: any = window;
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { getSkipAppVersion, setSkipAppVersion } from './userPreference';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import { isPlatformMac } from '../utils/main';
|
import { isPlatformMac } from '../utils/main';
|
||||||
import { logErrorSentry } from './sentry';
|
import { logErrorSentry } from './sentry';
|
||||||
|
import ElectronLog from 'electron-log';
|
||||||
|
|
||||||
const FIVE_MIN_IN_MICROSECOND = 5 * 60 * 1000;
|
const FIVE_MIN_IN_MICROSECOND = 5 * 60 * 1000;
|
||||||
|
|
||||||
|
@ -83,6 +84,7 @@ export async function checkForUpdateAndNotify(mainWindow: BrowserWindow) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateAndRestart() {
|
export function updateAndRestart() {
|
||||||
|
ElectronLog.log('user quit the app');
|
||||||
setIsAppQuitting(true);
|
setIsAppQuitting(true);
|
||||||
autoUpdater.quitAndInstall();
|
autoUpdater.quitAndInstall();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import log from 'electron-log';
|
import log from 'electron-log';
|
||||||
import { LOG_FILENAME, MAX_LOG_SIZE } from '../config';
|
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.fileName = LOG_FILENAME;
|
||||||
log.transports.file.maxSize = MAX_LOG_SIZE;
|
log.transports.file.maxSize = MAX_LOG_SIZE;
|
||||||
log.transports.console.level = false;
|
if (!isDev) {
|
||||||
|
log.transports.console.level = false;
|
||||||
|
}
|
||||||
log.transports.file.format =
|
log.transports.file.format =
|
||||||
'[{y}-{m}-{d}T{h}:{i}:{s}{z}] [{level}]{scope} {text}';
|
'[{y}-{m}-{d}T{h}:{i}:{s}{z}] [{level}]{scope} {text}';
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ import {
|
||||||
checkForUpdateAndNotify,
|
checkForUpdateAndNotify,
|
||||||
setupAutoUpdater,
|
setupAutoUpdater,
|
||||||
} from '../services/appUpdater';
|
} from '../services/appUpdater';
|
||||||
|
import ElectronLog from 'electron-log';
|
||||||
|
import os from 'os';
|
||||||
|
|
||||||
export function handleUpdates(mainWindow: BrowserWindow) {
|
export function handleUpdates(mainWindow: BrowserWindow) {
|
||||||
if (!isDev) {
|
if (!isDev) {
|
||||||
|
@ -102,3 +104,10 @@ export async function handleDockIconHideOnAutoLaunch() {
|
||||||
export function enableSharedArrayBufferSupport() {
|
export function enableSharedArrayBufferSupport() {
|
||||||
app.commandLine.appendSwitch('enable-features', 'SharedArrayBuffer');
|
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 });
|
||||||
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {
|
||||||
import { setIsAppQuitting } from '../main';
|
import { setIsAppQuitting } from '../main';
|
||||||
import autoLauncher from '../services/autoLauncher';
|
import autoLauncher from '../services/autoLauncher';
|
||||||
import { isPlatformMac } from './main';
|
import { isPlatformMac } from './main';
|
||||||
|
import ElectronLog from 'electron-log';
|
||||||
|
|
||||||
export function buildContextMenu(
|
export function buildContextMenu(
|
||||||
mainWindow: BrowserWindow,
|
mainWindow: BrowserWindow,
|
||||||
|
@ -76,6 +77,7 @@ export function buildContextMenu(
|
||||||
{
|
{
|
||||||
label: 'Quit ente',
|
label: 'Quit ente',
|
||||||
click: function () {
|
click: function () {
|
||||||
|
ElectronLog.log('user quit the app');
|
||||||
setIsAppQuitting(true);
|
setIsAppQuitting(true);
|
||||||
app.quit();
|
app.quit();
|
||||||
},
|
},
|
||||||
|
|
39
src/utils/processStats.ts
Normal file
39
src/utils/processStats.ts
Normal 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);
|
||||||
|
}
|
Loading…
Reference in a new issue