const HexUtil = require('./HexUtil'); class Logger { constructor() { this.debugEnabled = false; } debug(...args) { if (!this.debugEnabled) return; this._print(...args); } _print(...args) { try { const strings = this._convertArgsToStrings(...args); 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("\n" + HexUtil.debugDump(arg) + "\n"); } else if (typeof arg == 'function') { const result = arg.call(undefined, (...args) => out.push(...this._convertArgsToStrings(...args))); if (result !== undefined) out.push(...this._convertArgsToStrings(result)); } else { out.push(arg); } } return out; } } module.exports = Logger;