From 8a119d35cf29e83193f23afc3a4a3dedba10625f Mon Sep 17 00:00:00 2001 From: Nocccer Date: Sun, 30 Jan 2022 02:34:19 +0100 Subject: [PATCH 1/4] Added timestamp and lined logs --- electron/__tests__/logger.test.ts | 32 +++++++--- electron/legendary/library.ts | 2 +- electron/logger/logger.ts | 99 ++++++++++++++++++++++++++----- 3 files changed, 108 insertions(+), 25 deletions(-) diff --git a/electron/__tests__/logger.test.ts b/electron/__tests__/logger.test.ts index 91719fc9e4..637f2d609f 100644 --- a/electron/__tests__/logger.test.ts +++ b/electron/__tests__/logger.test.ts @@ -6,48 +6,64 @@ describe('Logger', () => { test('log a error message invokes console.error', () => { console.error = jest.fn() logger.logError('My error message') - expect(console.error).toBeCalledWith('ERROR: My error message') + expect(console.error).toBeCalledWith( + expect.stringContaining('ERROR: My error message') + ) // log with prefix logger.logError('My error message', logger.LogPrefix.Frontend) expect(console.error).toBeCalledWith( - `ERROR: [${logger.LogPrefix.Frontend}]: My error message` + expect.stringContaining( + `ERROR: [${logger.LogPrefix.Frontend}]: My error message` + ) ) }) test('log a warning message invokes console.log', () => { console.warn = jest.fn() logger.logWarning('My warning message') - expect(console.warn).toBeCalledWith('WARNING: My warning message') + expect(console.warn).toBeCalledWith( + expect.stringContaining('WARNING: My warning message') + ) // log with prefix logger.logWarning('My warning message', logger.LogPrefix.Legendary) expect(console.warn).toBeCalledWith( - `WARNING: [${logger.LogPrefix.Legendary}]: My warning message` + expect.stringContaining( + `WARNING: [${logger.LogPrefix.Legendary}]: My warning message` + ) ) }) test('log a info message invokes console.log', () => { console.log = jest.fn() logger.logInfo('My info message') - expect(console.log).toBeCalledWith('INFO: My info message') + expect(console.log).toBeCalledWith( + expect.stringContaining('INFO: My info message') + ) // log with prefix logger.logInfo('My info message', logger.LogPrefix.Frontend) expect(console.log).toBeCalledWith( - `INFO: [${logger.LogPrefix.Frontend}]: My info message` + expect.stringContaining( + `INFO: [${logger.LogPrefix.Frontend}]: My info message` + ) ) }) test('log a debug message invokes console.log', () => { console.log = jest.fn() logger.logDebug('My debug message') - expect(console.log).toBeCalledWith('DEBUG: My debug message') + expect(console.log).toBeCalledWith( + expect.stringContaining('DEBUG: My debug message') + ) // log with prefix logger.logDebug('My debug message', logger.LogPrefix.Legendary) expect(console.log).toBeCalledWith( - `DEBUG: [${logger.LogPrefix.Legendary}]: My debug message` + expect.stringContaining( + `DEBUG: [${logger.LogPrefix.Legendary}]: My debug message` + ) ) }) }) diff --git a/electron/legendary/library.ts b/electron/legendary/library.ts index e4d704b2b6..6868b185cf 100644 --- a/electron/legendary/library.ts +++ b/electron/legendary/library.ts @@ -100,7 +100,7 @@ class LegendaryLibrary { if (`${data}`.includes('ERROR')) { logError(`${data}`, LogPrefix.Legendary) } else { - logInfo(`${data}`, LogPrefix.Legendary) + logInfo(`${data}`.trim(), LogPrefix.Legendary) } }) child.on('error', (err) => rej(`${err}`)) diff --git a/electron/logger/logger.ts b/electron/logger/logger.ts index 6858b01d31..e940884115 100644 --- a/electron/logger/logger.ts +++ b/electron/logger/logger.ts @@ -33,6 +33,7 @@ export enum LogPrefix { Backend = 'Backend' } +let longestPrefix = 0 const configStore = new Store({ cwd: 'store' }) @@ -42,6 +43,14 @@ function convertToStringArray(param: string | string[]): string[] { return typeof param === 'string' ? [param] : param } +const padNumberToTwo = (n: number) => { + return ('0' + n).slice(-2) +} + +const repeatString = (n: number, char: string) => { + return n > 0 ? char.repeat(n) : '' +} + /** * Log debug messages * @param text debug messages to log @@ -54,10 +63,23 @@ export function logDebug( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : '' - const extendText = `DEBUG: ${prefixString}${convertToStringArray(text).join( - ' ' - )}` + // time + const ts = new Date() + const timeString = `(${[ + padNumberToTwo(ts.getHours()), + padNumberToTwo(ts.getMinutes()), + padNumberToTwo(ts.getSeconds()) + ].join(':')})` + + // prefix string + const prefixString = + prefix !== LogPrefix.General + ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` + : '' + + const extendText = `${timeString} DEBUG: ${prefixString}${convertToStringArray( + text + ).join(' ')}` console.log(extendText) if (!skipLogToFile) { @@ -77,10 +99,23 @@ export function logError( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : '' - const extendText = `ERROR: ${prefixString}${convertToStringArray(text).join( - ' ' - )}` + // time + const ts = new Date() + const timeString = `(${[ + padNumberToTwo(ts.getHours()), + padNumberToTwo(ts.getMinutes()), + padNumberToTwo(ts.getSeconds()) + ].join(':')})` + + // prefix string + const prefixString = + prefix !== LogPrefix.General + ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` + : '' + + const extendText = `${timeString} ERROR: ${prefixString}${convertToStringArray( + text + ).join(' ')}` console.error(extendText) if (!skipLogToFile) { @@ -100,10 +135,23 @@ export function logInfo( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : '' - const extendText = `INFO: ${prefixString}${convertToStringArray(text).join( - ' ' - )}` + // time + const ts = new Date() + const timeString = `(${[ + padNumberToTwo(ts.getHours()), + padNumberToTwo(ts.getMinutes()), + padNumberToTwo(ts.getSeconds()) + ].join(':')})` + + // prefix string + const prefixString = + prefix !== LogPrefix.General + ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` + : '' + + const extendText = `${timeString} INFO: ${prefixString}${convertToStringArray( + text + ).join(' ')}` console.log(extendText) if (!skipLogToFile) { @@ -123,10 +171,22 @@ export function logWarning( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : '' - const extendText = `WARNING: ${prefixString}${convertToStringArray(text).join( - ' ' - )}` + // time + const ts = new Date() + const timeString = `(${[ + padNumberToTwo(ts.getHours()), + padNumberToTwo(ts.getMinutes()), + padNumberToTwo(ts.getSeconds()) + ].join(':')})` + + // prefix string + const prefixString = + prefix !== LogPrefix.General + ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` + : '' + const extendText = `${timeString} WARNING: ${prefixString}${convertToStringArray( + text + ).join(' ')}` console.warn(extendText) if (!skipLogToFile) { @@ -193,6 +253,13 @@ export function createNewLogFileAndClearOldOnces(): createLogFileReturn { configStore.set('general-logs', logs) + //get longest prefix to line logs better + for (const prefix in LogPrefix) { + if (longestPrefix < String(prefix).length) { + longestPrefix = String(prefix).length + } + } + return logs } From 9e66ba3b84354f916aaad280e07585c5bbe4f80c Mon Sep 17 00:00:00 2001 From: Nocccer Date: Sun, 30 Jan 2022 02:41:09 +0100 Subject: [PATCH 2/4] Comment fix --- electron/logger/logger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/logger/logger.ts b/electron/logger/logger.ts index e940884115..83bd744975 100644 --- a/electron/logger/logger.ts +++ b/electron/logger/logger.ts @@ -253,7 +253,7 @@ export function createNewLogFileAndClearOldOnces(): createLogFileReturn { configStore.set('general-logs', logs) - //get longest prefix to line logs better + // get longest prefix to log lines in a kind of table for (const prefix in LogPrefix) { if (longestPrefix < String(prefix).length) { longestPrefix = String(prefix).length From 1abb189725b9185d62e792c529d61a5c60c89eeb Mon Sep 17 00:00:00 2001 From: Nocccer Date: Sun, 30 Jan 2022 13:21:29 +0100 Subject: [PATCH 3/4] Review fixes --- electron/logger/logger.ts | 95 ++++++++++++--------------------------- 1 file changed, 28 insertions(+), 67 deletions(-) diff --git a/electron/logger/logger.ts b/electron/logger/logger.ts index 83bd744975..2c50174726 100644 --- a/electron/logger/logger.ts +++ b/electron/logger/logger.ts @@ -51,6 +51,22 @@ const repeatString = (n: number, char: string) => { return n > 0 ? char.repeat(n) : '' } +const getTimeStamp = () => { + const ts = new Date() + + return `(${[ + padNumberToTwo(ts.getHours()), + padNumberToTwo(ts.getMinutes()), + padNumberToTwo(ts.getSeconds()) + ].join(':')})` +} + +const getPrefixString = (prefix: LogPrefix) => { + return prefix !== LogPrefix.General + ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` + : '' +} + /** * Log debug messages * @param text debug messages to log @@ -63,23 +79,9 @@ export function logDebug( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - // time - const ts = new Date() - const timeString = `(${[ - padNumberToTwo(ts.getHours()), - padNumberToTwo(ts.getMinutes()), - padNumberToTwo(ts.getSeconds()) - ].join(':')})` - - // prefix string - const prefixString = - prefix !== LogPrefix.General - ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` - : '' - - const extendText = `${timeString} DEBUG: ${prefixString}${convertToStringArray( - text - ).join(' ')}` + const extendText = `${getTimeStamp()} DEBUG: ${getPrefixString( + prefix + )}${convertToStringArray(text).join(' ')}` console.log(extendText) if (!skipLogToFile) { @@ -99,23 +101,9 @@ export function logError( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - // time - const ts = new Date() - const timeString = `(${[ - padNumberToTwo(ts.getHours()), - padNumberToTwo(ts.getMinutes()), - padNumberToTwo(ts.getSeconds()) - ].join(':')})` - - // prefix string - const prefixString = - prefix !== LogPrefix.General - ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` - : '' - - const extendText = `${timeString} ERROR: ${prefixString}${convertToStringArray( - text - ).join(' ')}` + const extendText = `${getTimeStamp()} ERROR: ${getPrefixString( + prefix + )}${convertToStringArray(text).join(' ')}` console.error(extendText) if (!skipLogToFile) { @@ -135,23 +123,9 @@ export function logInfo( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - // time - const ts = new Date() - const timeString = `(${[ - padNumberToTwo(ts.getHours()), - padNumberToTwo(ts.getMinutes()), - padNumberToTwo(ts.getSeconds()) - ].join(':')})` - - // prefix string - const prefixString = - prefix !== LogPrefix.General - ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` - : '' - - const extendText = `${timeString} INFO: ${prefixString}${convertToStringArray( - text - ).join(' ')}` + const extendText = `${getTimeStamp()} INFO: ${getPrefixString( + prefix + )}${convertToStringArray(text).join(' ')}` console.log(extendText) if (!skipLogToFile) { @@ -171,22 +145,9 @@ export function logWarning( prefix: LogPrefix = LogPrefix.General, skipLogToFile = false ) { - // time - const ts = new Date() - const timeString = `(${[ - padNumberToTwo(ts.getHours()), - padNumberToTwo(ts.getMinutes()), - padNumberToTwo(ts.getSeconds()) - ].join(':')})` - - // prefix string - const prefixString = - prefix !== LogPrefix.General - ? `[${prefix}]: ${repeatString(longestPrefix - prefix.length, ' ')}` - : '' - const extendText = `${timeString} WARNING: ${prefixString}${convertToStringArray( - text - ).join(' ')}` + const extendText = `${getTimeStamp()} WARNING: ${getPrefixString( + prefix + )}${convertToStringArray(text).join(' ')}` console.warn(extendText) if (!skipLogToFile) { From a5900d11991c701eb6488df51e1beddf6ffbaafe Mon Sep 17 00:00:00 2001 From: Nocccer Date: Sun, 30 Jan 2022 13:22:27 +0100 Subject: [PATCH 4/4] Review fixes (2) --- electron/legendary/library.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/legendary/library.ts b/electron/legendary/library.ts index 6868b185cf..e5c7c3e87a 100644 --- a/electron/legendary/library.ts +++ b/electron/legendary/library.ts @@ -98,7 +98,7 @@ class LegendaryLibrary { const child = spawn(legendaryBin, ['list', getUeAssets]) child.stderr.on('data', (data) => { if (`${data}`.includes('ERROR')) { - logError(`${data}`, LogPrefix.Legendary) + logError(`${data}`.trim(), LogPrefix.Legendary) } else { logInfo(`${data}`.trim(), LogPrefix.Legendary) }