@stringsync/vexml
Version:
MusicXML to Vexflow
27 lines (26 loc) • 907 B
JavaScript
export class MemoryLogger {
logs = new Array();
getLogs() {
return this.logs;
}
debug(message, meta) {
this.logs.push({ level: 'debug', message, meta: { callsite: this.getCallsite(), ...meta } });
}
info(message, meta) {
this.logs.push({ level: 'info', message, meta: { callsite: this.getCallsite(), ...meta } });
}
warn(message, meta) {
this.logs.push({ level: 'warn', message, meta: { callsite: this.getCallsite(), ...meta } });
}
error(message, meta) {
this.logs.push({ level: 'error', message, meta: { callsite: this.getCallsite(), ...meta } });
}
getCallsite() {
const stack = new Error().stack;
if (!stack)
return '';
const stackLines = stack.split('\n');
// Return the third line which is the callsite
return stackLines[3] ? stackLines[3].trim() : '';
}
}