mirror of
https://github.com/gamedig/node-gamedig.git
synced 2024-11-18 01:30:39 +01:00
ad9adff06c
* Redo imports and exports for lib * Redo imports and exports for bim * Redo imports and exports for games * Remove remaining module.exports * Use export default in lib * Use export default in protocols * Fix import in genreadme.js * Make package module and solve __dirname * Fix minecraft protocol imports * Fix imports on games and make binary runnable * Renamed protocol class exports to lowercase * Export promises class as default * Update README.md to use imports instead of require * Update CHANGELOG to mention the changes. * Remove Valve unused imports * Fix iconv import
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import {debugDump} from './HexUtil.js';
|
|
|
|
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;
|
|
}
|
|
}
|