Skip to content

Commit

Permalink
[General] Add timestamp and relined logs (#939)
Browse files Browse the repository at this point in the history
* Added timestamp and lined logs

* Comment fix

* Review fixes

* Review fixes (2)
  • Loading branch information
Nocccer committed Jan 30, 2022
1 parent 229afaf commit 21c0dfb
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 26 deletions.
32 changes: 24 additions & 8 deletions electron/__tests__/logger.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`
)
)
})
})
4 changes: 2 additions & 2 deletions electron/legendary/library.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,9 @@ 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}`, LogPrefix.Legendary)
logInfo(`${data}`.trim(), LogPrefix.Legendary)
}
})
child.on('error', (err) => rej(`${err}`))
Expand Down
60 changes: 44 additions & 16 deletions electron/logger/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export enum LogPrefix {
Backend = 'Backend'
}

let longestPrefix = 0
const configStore = new Store({
cwd: 'store'
})
Expand All @@ -42,6 +43,30 @@ 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) : ''
}

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
Expand All @@ -54,10 +79,9 @@ export function logDebug(
prefix: LogPrefix = LogPrefix.General,
skipLogToFile = false
) {
const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : ''
const extendText = `DEBUG: ${prefixString}${convertToStringArray(text).join(
' '
)}`
const extendText = `${getTimeStamp()} DEBUG: ${getPrefixString(
prefix
)}${convertToStringArray(text).join(' ')}`
console.log(extendText)

if (!skipLogToFile) {
Expand All @@ -77,10 +101,9 @@ export function logError(
prefix: LogPrefix = LogPrefix.General,
skipLogToFile = false
) {
const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : ''
const extendText = `ERROR: ${prefixString}${convertToStringArray(text).join(
' '
)}`
const extendText = `${getTimeStamp()} ERROR: ${getPrefixString(
prefix
)}${convertToStringArray(text).join(' ')}`
console.error(extendText)

if (!skipLogToFile) {
Expand All @@ -100,10 +123,9 @@ export function logInfo(
prefix: LogPrefix = LogPrefix.General,
skipLogToFile = false
) {
const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : ''
const extendText = `INFO: ${prefixString}${convertToStringArray(text).join(
' '
)}`
const extendText = `${getTimeStamp()} INFO: ${getPrefixString(
prefix
)}${convertToStringArray(text).join(' ')}`
console.log(extendText)

if (!skipLogToFile) {
Expand All @@ -123,10 +145,9 @@ export function logWarning(
prefix: LogPrefix = LogPrefix.General,
skipLogToFile = false
) {
const prefixString = prefix !== LogPrefix.General ? `[${prefix}]: ` : ''
const extendText = `WARNING: ${prefixString}${convertToStringArray(text).join(
' '
)}`
const extendText = `${getTimeStamp()} WARNING: ${getPrefixString(
prefix
)}${convertToStringArray(text).join(' ')}`
console.warn(extendText)

if (!skipLogToFile) {
Expand Down Expand Up @@ -193,6 +214,13 @@ export function createNewLogFileAndClearOldOnces(): createLogFileReturn {

configStore.set('general-logs', logs)

// 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
}
}

return logs
}

Expand Down

0 comments on commit 21c0dfb

Please sign in to comment.