30 lines
760 B
JavaScript
30 lines
760 B
JavaScript
/* monkey-patch console.log to prefix with file/line-number */
|
|
function lineLogger(logFn) {
|
|
let cwd = process.cwd(),
|
|
cwdRe = new RegExp("^[^/]*" + cwd.replace("/", "\\/") + "\/([^:]*:[0-9]*).*$");
|
|
|
|
function getErrorObject() {
|
|
try {
|
|
throw Error();
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|
|
|
|
let err = getErrorObject(),
|
|
caller_line = err.stack.split("\n")[4],
|
|
args = [caller_line.replace(cwdRe, "$1 -")];
|
|
|
|
/* arguments.unshift() doesn't exist... */
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
args.push(arguments[i]);
|
|
}
|
|
|
|
logFn.apply(this, args);
|
|
}
|
|
|
|
console.log = lineLogger.bind(console, console.log);
|
|
console.warn = lineLogger.bind(console, console.warn);
|
|
console.error = lineLogger.bind(console, console.error);
|
|
|