/* 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);