Some improvements in logging

This commit is contained in:
Hakan Shehu
2024-11-30 11:01:56 +01:00
parent b566603bbc
commit e63f84a559
2 changed files with 38 additions and 12 deletions

View File

@@ -15,7 +15,7 @@ import { CommandInput } from '@/shared/commands';
import { commandService } from '@/main/services/command-service';
import { bootstrapper } from '@/main/bootstrapper';
import started from 'electron-squirrel-startup';
import { createLogger } from '@/main/logger';
import { closeLoggers, createLogger } from '@/main/logger';
import { getAppIconPath } from '@/main/utils';
const logger = createLogger('main');
@@ -112,6 +112,10 @@ app.on('activate', () => {
}
});
app.on('before-quit', () => {
closeLoggers();
});
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and import them here.
ipcMain.handle('init', async () => {

View File

@@ -1,5 +1,6 @@
import { app } from 'electron';
import pino, { Level } from 'pino';
import pino, { Level, Logger } from 'pino';
import path from 'path';
const logConfig: Record<string, Level> = {
main: 'trace',
@@ -7,17 +8,38 @@ const logConfig: Record<string, Level> = {
'file-service': 'trace',
};
const loggers: Record<string, Logger> = {};
const logPath = path.join(app.getPath('userData'), 'logs.log');
export const createLogger = (name: string) => {
return pino({
name,
level: logConfig[name] || 'trace',
transport: !app.isPackaged
? {
target: 'pino-pretty',
options: {
colorize: true,
if (!loggers[name]) {
loggers[name] = pino({
name,
level: logConfig[name] || 'trace',
transport: app.isPackaged
? {
target: 'pino/file',
options: {
destination: logPath,
mkdir: true,
autoEnd: false,
},
}
: {
target: 'pino-pretty',
options: {
colorize: true,
autoEnd: false,
},
},
}
: undefined,
});
}
return loggers[name];
};
export const closeLoggers = () => {
Object.values(loggers).forEach((logger) => {
logger.flush();
});
};