From 77c43c824deae95f92149f8be3b4b60ffed18c3d Mon Sep 17 00:00:00 2001 From: Richard Bowman Date: Wed, 13 Dec 2023 01:53:55 +0000 Subject: [PATCH] Restore log viewer --- webapp/src/components/appContent.vue | 4 +- .../tabContentComponents/loggingContent.vue | 48 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/webapp/src/components/appContent.vue b/webapp/src/components/appContent.vue index 6810d55a..a2dd1bbc 100644 --- a/webapp/src/components/appContent.vue +++ b/webapp/src/components/appContent.vue @@ -216,11 +216,11 @@ export default { component: settingsContent, class: "uk-margin-auto-top" }, - /*{ + { id: "logging", icon: "assignment_late", component: loggingContent - },*/ + }, { id: "about", icon: "info", diff --git a/webapp/src/components/tabContentComponents/loggingContent.vue b/webapp/src/components/tabContentComponents/loggingContent.vue index 8bbf45c6..56a51686 100644 --- a/webapp/src/components/tabContentComponents/loggingContent.vue +++ b/webapp/src/components/tabContentComponents/loggingContent.vue @@ -42,15 +42,15 @@
- {{ formatDateTime(item.data.created) }} + {{ formatDateTime(item.timestamp) }}
{{ formatMessage(item) }}
@@ -102,18 +102,15 @@ export default { var items = []; for (var item of this.logs) { // Add to capture list if matched - if (this.filteredLevels.includes(item.data.levelname)) { + if (this.filteredLevels.includes(item.level)) { items.push(item); } } return items; }, - loggingUri: function() { - return `${this.$store.getters.baseUri}/api/v2/events/logging`; - }, logFileURI: function() { - return `${this.$store.getters.baseUri}/api/v2/log`; + return `${this.$store.getters.baseUri}/log/`; }, pagedItems: function() { let startIndex = (this.page - 1) * this.maxitems; @@ -124,11 +121,6 @@ export default { } }, - mounted() { - // Update on mount (does nothing if not connected) - this.updateLogs(); - }, - methods: { scrollToTop() { const el = document.querySelector("#container-left"); @@ -141,22 +133,30 @@ export default { this.updateLogs(); } }, - updateLogs: function() { - axios - .get(this.loggingUri) - .then(response => { - this.logs = response.data.reverse(); - }) - .catch(error => { - this.modalError(error); // Let mixin handle error - }); + async updateLogs() { + let response = await axios.get(this.logFileURI); + let lines = response.data.split("\n").reverse(); + this.logs = []; + let regexp = /\[(.+)\] \[(.+)\] (.*)$/; + for (let line of lines) { + if (line.length > 0) { + let m = line.match(regexp); + this.logs.push({ + timestamp: m[1], + level: m[2], + message: m[3], + sequence: this.logs.length + }); + } + } }, formatDateTime: function(isoDateTimeString) { + isoDateTimeString = isoDateTimeString.replace(",", "."); let date = new Date(isoDateTimeString); return date.toLocaleDateString() + " " + date.toLocaleTimeString(); }, formatMessage: function(item) { - return item.data.levelname + ": " + item.data.message; + return item.level + ": " + item.message; } } };