log.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <html>
  2. <head>
  3. <style>
  4. html,
  5. body {
  6. height: 100%;
  7. margin: 2px;
  8. }
  9. .box {
  10. display: flex;
  11. flex-flow: column;
  12. height: 100%;
  13. }
  14. .box .row.header {
  15. flex: 0 1 auto;
  16. }
  17. .box .row.content {
  18. flex: 1 1 auto;
  19. }
  20. .box .row.footer {
  21. flex: 0 1 auto;
  22. }
  23. #log {
  24. font-family: 'Courier New', Courier, monospace;
  25. font-size: small;
  26. }
  27. </style>
  28. <script type="text/javascript" src="common.js?v=$COMMIT_HASH"></script>
  29. </head>
  30. <body>
  31. <div class="box">
  32. <div class="row header">
  33. <button onClick="reload();">Reload</button>
  34. <button onClick="window.open(getDomainname() + '/logfileact');">Show full log</button>
  35. <button onClick="window.location.href = getDomainname() + '/fileserver/log/message/'">Show older log files</button>
  36. </div>
  37. <div class="row content" id="log"><br><br><br><b>Loading Logfile, please wait...</b></div>
  38. <div class="row footer">
  39. <button onClick="reload();">Reload</button>
  40. <button onClick="window.open(getDomainname() + '/logfileact');">Show full log</button>
  41. <button onClick="window.location.href = getDomainname() + '/fileserver/log/message/'">Show older log files</button>
  42. </div>
  43. </div>
  44. </body>
  45. <script>
  46. function reload() {
  47. // document.getElementById('log').innerHTML += "<br><b>Reloading...<b><br><br>";
  48. document.getElementById('log').innerHTML += "<b>Reloading...</b>";
  49. window.scrollBy(0,document.body.scrollHeight);
  50. funcRequest(getDomainname() + '/log');
  51. }
  52. function processLogLine(line, index, arr) {
  53. /* Make sure the whitespaces in the uptime field get persevered */
  54. uptimePart = line.slice(0, line.indexOf("]")).replace(/ /g, "&nbsp;");
  55. line = uptimePart + line.slice(line.indexOf("]"))
  56. if (line.includes("&lt;WRN&gt;")) {
  57. arr[index] = "<span style=\"color:#e83c00\">" + line + "</span>";
  58. }
  59. else if (line.includes("&lt;ERR&gt;")) {
  60. arr[index] = "<span style=\"color:red\"><b>" + line + "</b></span>";
  61. }
  62. else if (line.includes("&lt;DBG&gt;")) {
  63. arr[index] = "<span style=\"color:gray\">" + line + "</span>";
  64. }
  65. else {
  66. arr[index] = line;
  67. }
  68. arr[index] += "<br>";
  69. }
  70. async function funcRequest(url){
  71. await fetch(url)
  72. .then((res) => {
  73. if (!res.ok) {
  74. document.getElementById("log").innerHTML = "HTTP error " + res.status;
  75. }
  76. return res.text();
  77. })
  78. .then((log) => {
  79. log = log.replace(/</g, "&lt;");
  80. log = log.replace(/>/g, "&gt;");
  81. logArr = log.split("\n");
  82. logArr.forEach(processLogLine);
  83. document.getElementById('log').innerHTML = "<br>" + logArr.join("\n") + "&nbsp;";
  84. window.scrollBy(0,document.body.scrollHeight);
  85. })
  86. .catch((err) => {
  87. document.getElementById("log").innerHTML = err;
  88. });
  89. }
  90. funcRequest(getDomainname() + '/log');
  91. </script>
  92. </html>