2023-11-12 12:14:43 +01:00
|
|
|
import { debugDump } from './HexUtil.js'
|
|
|
|
import { Buffer} from 'node:buffer'
|
|
|
|
|
|
|
|
export default class Logger {
|
|
|
|
constructor () {
|
|
|
|
this.debugEnabled = false
|
|
|
|
this.prefix = ''
|
|
|
|
}
|
|
|
|
|
|
|
|
debug (...args) {
|
|
|
|
if (!this.debugEnabled) return
|
|
|
|
this._print(...args)
|
|
|
|
}
|
|
|
|
|
|
|
|
_print (...args) {
|
|
|
|
try {
|
|
|
|
const strings = this._convertArgsToStrings(...args)
|
|
|
|
if (strings.length) {
|
|
|
|
if (this.prefix) {
|
|
|
|
strings.unshift(this.prefix)
|
|
|
|
}
|
|
|
|
console.log(...strings)
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
console.log('Error while logging: ' + e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
_convertArgsToStrings (...args) {
|
|
|
|
const out = []
|
|
|
|
for (const arg of args) {
|
|
|
|
if (arg instanceof Error) {
|
|
|
|
out.push(arg.stack)
|
|
|
|
} else if (arg instanceof Buffer) {
|
|
|
|
out.push(debugDump(arg))
|
|
|
|
} else if (typeof arg === 'function') {
|
|
|
|
const result = arg.call(undefined, (...args) => this._print(...args))
|
|
|
|
if (result !== undefined) out.push(...this._convertArgsToStrings(result))
|
|
|
|
} else {
|
|
|
|
out.push(arg)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return out
|
|
|
|
}
|
|
|
|
}
|