betterLogging.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. rewireLoggingToElement(
  2. () => document.getElementById("log"),
  3. () => document.getElementById("log-container"),
  4. true
  5. );
  6. function rewireLoggingToElement(eleLocator, eleOverflowLocator, autoScroll) {
  7. fixLoggingFunc("log");
  8. function fixLoggingFunc(name) {
  9. console.old = console.log;
  10. console.log = function (...arg) {
  11. const output = produceOutput(name, arg);
  12. const eleLog = eleLocator();
  13. if (autoScroll) {
  14. const eleContainerLog = eleOverflowLocator();
  15. const isScrolledToBottom =
  16. eleContainerLog.scrollHeight - eleContainerLog.clientHeight <=
  17. eleContainerLog.scrollTop + 1;
  18. eleLog.innerHTML += output + "<br>";
  19. if (isScrolledToBottom) {
  20. eleContainerLog.scrollTop =
  21. eleContainerLog.scrollHeight - eleContainerLog.clientHeight;
  22. }
  23. } else {
  24. eleLog.innerHTML += output + "<br>";
  25. }
  26. };
  27. }
  28. function produceOutput(name, args) {
  29. arg = args[0].replace("%c", "");
  30. return '<span style="' + args[1] + '">' + arg + "</span>&nbsp;";
  31. }
  32. }