debugLogger.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. window.error_handler_logs.push({
  11. type: name,
  12. ts: +new Date,
  13. arguments,
  14. });
  15. let dataHandlerUrl = new URL("http://localhost:3000/api/dataHandler");
  16. dataHandlerUrl.searchParams.append('type', 'logs');
  17. fetch(dataHandlerUrl, {
  18. method: "POST",
  19. headers: { "Content-Type": "application/json" },
  20. body: JSON.stringify({type: name,ts: +new Date,arguments,}),
  21. });
  22. passf.apply(null, arguments);
  23. }
  24. switch (name) {
  25. case 'log':
  26. case 'debug':
  27. case 'info':
  28. case 'warn':
  29. case 'error':
  30. return logf;
  31. default:
  32. return passf;
  33. }
  34. }
  35. }))(window.console);
  36. window.console = new Proxy({}, handler);
  37. window.addEventListener("error", (e) => {
  38. console.error(`Error occurred: ${e.error.message} ${e.error.stack}`);
  39. return false;
  40. });
  41. window.addEventListener("unhandledrejection", (e) => {
  42. console.error(`Unhandled rejection: ${e.message}`);
  43. return false;
  44. });
  45. window.error_handler_installed = true;
  46. }
  47. }