debugLogger.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. if (typeof window !== "undefined") {
  2. if(! window.error_handler_installed) {
  3. window.error_handler_logs = [];
  4. const handler = ((old) => ({
  5. get: (_, name) => {
  6. function passf() {
  7. old[name].apply(null, arguments);
  8. }
  9. function logf() {
  10. const logEntry = {
  11. type: name,
  12. ts: +new Date(),
  13. arguments,
  14. };
  15. window.error_handler_logs.push(logEntry);
  16. passf.apply(null, arguments);
  17. }
  18. switch (name) {
  19. case 'log':
  20. case 'debug':
  21. case 'info':
  22. case 'warn':
  23. case 'error':
  24. return logf;
  25. default:
  26. return passf;
  27. }
  28. }
  29. }))(window.console);
  30. window.console = new Proxy({}, handler);
  31. window.addEventListener("error", (e) => {
  32. console.error(`Error occurred: ${e.error.message} ${e.error.stack}`);
  33. return false;
  34. });
  35. window.addEventListener("unhandledrejection", (e) => {
  36. console.error(`Unhandled rejection: ${e.message}`);
  37. return false;
  38. });
  39. window.error_handler_installed = true;
  40. }
  41. }