Skip to content

Instantly share code, notes, and snippets.

@GuilhermeRossato
Created April 14, 2022 04:40
Show Gist options
  • Save GuilhermeRossato/358b71b3e971361df95226d5744a307a to your computer and use it in GitHub Desktop.
Save GuilhermeRossato/358b71b3e971361df95226d5744a307a to your computer and use it in GitHub Desktop.
Script to trace every console.log / warn / error and process.stdout.write after it executes (process.stdout part only for nodejs context)
['log', 'warn', 'error'].forEach((methodName) => {
// @ts-ignore
const originalMethod = console[methodName];
// @ts-ignore
console[methodName] = (...args) => {
let initiator = 'unknown place';
try {
throw new Error();
} catch (e) {
// @ts-ignore
initiator = e.stack.substring(e.stack.indexOf('\n')+1);//e.stack.split('\n').slice(1).join('\n');
}
originalMethod.apply(console, [methodName, ...args, '\n', ` at ${initiator}`]);
};
});
if (typeof process === 'object' && typeof process.stdout === 'object') {
// @ts-ignore
const originalMethod = process.stdout["write"];
// @ts-ignore
process.stdout["write"] = (...args) => {
originalMethod.call(process.stdout, args[0]);
let initiator = 'unknown place';
try {
throw new Error();
} catch (e) {
// @ts-ignore
initiator = e.stack.substring(e.stack.indexOf('\n')+1);//e.stack.split('\n').slice(1).join('\n');
}
originalMethod.call(process.stdout, `${(args[0][args[0].length-1] === '\n') ? '\n' : ''}${initiator}\n`);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment