Skip to content

Commit 5200329

Browse files
committed
feat: added trace log level
1 parent 0e9810c commit 5200329

File tree

2 files changed

+46
-12
lines changed

2 files changed

+46
-12
lines changed
+8-6
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
export enum LogLevel {
2-
DEBUG = 'debug',
3-
INFO = 'info',
4-
WARN = 'warn',
52
ERROR = 'error',
3+
WARN = 'warn',
4+
INFO = 'info',
5+
DEBUG = 'debug',
6+
TRACE = 'trace',
67
}
78

89
export type LogData = Record<string, unknown>;
910

1011
export type LogFunction = (message: string, data?: LogData) => void;
1112

1213
export interface Logger {
13-
debug: LogFunction;
14-
info: LogFunction;
15-
warn: LogFunction;
1614
error: LogFunction;
15+
warn: LogFunction;
16+
info: LogFunction;
17+
debug: LogFunction;
18+
trace: LogFunction;
1719
}

electron/common/logger/logger.utils.ts

+38-6
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,53 @@
22
// to use depends on if the code runs in the main or renderer process.
33
// It's in those modules that the correct logger instance will be imported.
44
import type {
5+
LogFunctions as ElectronLogFunctions,
56
Logger as ElectronLogger,
67
LogLevel,
78
LogMessage,
89
} from 'electron-log';
910
import { formatLogData } from './logger.format';
1011
import type { LogFunction, Logger } from './logger.types';
1112

12-
export function createLogger(scope?: string): Logger {
13-
let electronLogger: ElectronLogger;
13+
interface ElectronLogFunctionsExtended extends ElectronLogFunctions {
14+
/**
15+
* Alias for silly.
16+
*/
17+
trace: LogFunction;
18+
}
19+
20+
/**
21+
* Get the electron-log instance to use, appropriate for
22+
* the current process (e.g. main vs. renderer).
23+
*/
24+
function getElectronLoggerInstance(): ElectronLogger {
1425
if (typeof window === 'undefined') {
15-
electronLogger = require('electron-log/main');
16-
} else {
17-
electronLogger = require('electron-log/renderer');
26+
return require('electron-log/main');
1827
}
19-
return scope ? electronLogger.scope(scope) : electronLogger;
28+
return require('electron-log/renderer');
29+
}
30+
31+
function addTraceLevel(logger: ElectronLogger): void {
32+
if (!logger.levels.includes('trace')) {
33+
logger.addLevel('trace');
34+
}
35+
}
36+
37+
export function createLogger(scope?: string): Logger {
38+
const electronLogger = getElectronLoggerInstance();
39+
40+
addTraceLevel(electronLogger);
41+
42+
const logger: ElectronLogFunctions = scope
43+
? electronLogger.scope(scope)
44+
: electronLogger;
45+
46+
// Have to cast because typescript isn't aware of the new `trace` function.
47+
const extendedLogger = logger as ElectronLogFunctionsExtended as Logger;
48+
49+
extendedLogger.trace('created logger', { scope });
50+
51+
return extendedLogger;
2052
}
2153

2254
export function initializeLogging(logger: ElectronLogger): void {

0 commit comments

Comments
 (0)