From 08618b653cd7a7ed1602ab87a09ba28a1d94f54d Mon Sep 17 00:00:00 2001 From: Warren Date: Thu, 30 Aug 2018 12:42:43 +0100 Subject: [PATCH] Gets the rough wrieframe to use real API data now * List number of total errors * Pie Chart of log level counts * Message counts * Log items with paging & searching --- .../common/resources/logviewer.resource.js | 72 +++++++++++++++ .../views/logviewer/overview.controller.js | 54 +++++++++-- .../src/views/logviewer/overview.html | 91 ++++++++----------- 3 files changed, 155 insertions(+), 62 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/common/resources/logviewer.resource.js diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/logviewer.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/logviewer.resource.js new file mode 100644 index 0000000000..d5a12bdf67 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/resources/logviewer.resource.js @@ -0,0 +1,72 @@ +/** + * @ngdoc service + * @name umbraco.resources.logViewerResource + * @description Retrives Umbraco log items (by default from JSON files on disk) + * + * + **/ + function logViewerResource($q, $http, umbRequestHelper) { + + //the factory object returned + return { + + getNumberOfErrors: function(){ + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "logViewerApiBaseUrl", + "GetNumberOfErrors")), + 'Failed to retrieve number of errors in logs') + }, + + getLogLevelCounts: function(){ + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "logViewerApiBaseUrl", + "GetLogLevelCounts")), + 'Failed to retrieve log level counts'); + }, + + getCommonLogMessages: function(){ + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "logViewerApiBaseUrl", + "GetCommonLogMessages")), + 'Failed to retrieve common log messages'); + }, + + getLogs: function(options){ + + var defaults = { + pageSize: 100, + pageNumber: 1, + orderDirection: "Descending", + filterExpression: '' + }; + + if (options === undefined) { + options = {}; + } + + //overwrite the defaults if there are any specified + angular.extend(defaults, options); + + //now copy back to the options we will use + options = defaults; + + + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "logViewerApiBaseUrl", + "GetLogs", + options)), + 'Failed to retrieve common log messages'); + } + + }; +} + +angular.module('umbraco.resources').factory('logViewerResource', logViewerResource); diff --git a/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.controller.js b/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.controller.js index 8c85b34980..7abacccb2d 100644 --- a/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.controller.js @@ -1,13 +1,19 @@ (function () { "use strict"; - function LogViewerOverviewController($scope, $location, localizationService) { + function LogViewerOverviewController($scope, $location, localizationService, logViewerResource) { var vm = this; + vm.loading = false; vm.page = {}; vm.labels = {}; + vm.logItems = {}; + vm.numberOfErrors = 0; + vm.commonLogMessages = []; + vm.logOptions = {}; + // ChartJS Options - for count/overview of log distribution vm.logTypeLabels = ["Info", "Debug", "Warning", "Error", "Critical"]; vm.logTypeData = [0, 0, 0, 0, 0]; @@ -19,12 +25,33 @@ } }; - vm.editLanguage = editLanguage; + //Functions + vm.getLogs = getLogs; + vm.changePageNumber = changePageNumber; + vm.search = search; function init() { - vm.loading = true; + logViewerResource.getNumberOfErrors().then(function (data) { + vm.numberOfErrors = data; + }); + + logViewerResource.getLogLevelCounts().then(function (data) { + vm.logTypeData = []; + vm.logTypeData.push(data.Information); + vm.logTypeData.push(data.Debug); + vm.logTypeData.push(data.Warning); + vm.logTypeData.push(data.Error); + vm.logTypeData.push(data.Fatal); + }); + + logViewerResource.getCommonLogMessages().then(function(data){ + vm.commonLogMessages = data; + }); + + //Get all logs on init load + getLogs(); // localize labels var labelKeys = [ @@ -40,11 +67,24 @@ // set page name vm.page.name = vm.labels.languages; }); + } + + + function search(){ + //Reset pagenumber back to 1 + vm.logOptions.pageNumber = 1; + getLogs(); } - - function editLanguage(language) { - $location.search('create', null); - $location.path("/settings/languages/edit/" + language.id); + + function changePageNumber(pageNumber) { + vm.logOptions.pageNumber = pageNumber; + getLogs(); + } + + function getLogs(){ + logViewerResource.getLogs(vm.logOptions).then(function (data) { + vm.logItems = data; + }); } init(); diff --git a/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.html b/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.html index af69ad4d7c..96cde37b34 100644 --- a/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.html +++ b/src/Umbraco.Web.UI.Client/src/views/logviewer/overview.html @@ -12,30 +12,40 @@ - + + + button-style="button" + type="button" + action="vm.search()" + label-key="general_search"> + -
+
+ + + + +
+
+ Total Items: {{ vm.logItems.totalItems }} +
- +
@@ -46,30 +56,25 @@ - - - - - + + + + + - - - - - - -
Timestamp
2018-08-24T08:27:06INFODELLBOOKSome info log message
{{ log.Timestamp }}{{ log.Level }}{{ log.Properties.MachineName.Value }}{{ log.RenderedMessage }}
2018-08-24T08:27:06INFODELLBOOKOrdered Components:
- Umbraco.Core.Runtime.CoreRuntimeComponent
- Umbraco.Web.Runtime.WebRuntimeComponent
- Umbraco.Core.Logging.WebProfilerComponent
- Umbraco.Core.Auditing.AuditEventsComponent
- Umbraco.Web.PublishedCache.NuCache.NuCacheComponent
- Umbraco.Core.Components.UmbracoCoreComponent -
+ +
+ + +
@@ -81,7 +86,7 @@ Number of Errors - 1234 + {{ vm.numberOfErrors }} @@ -101,42 +106,18 @@ - + Common Log Messages - + - - - - - - - - - - - -
- [Timing {TimingId}] {EndMessage} ({TimingDuration}ms) + {{ template.MessageTemplate }} - 1234 -
- [Timing {TimingId}] {StartMessage} - - 487 -
- The tree definition: {AddElement} could not be resolved to a .Net object type - - 360 -
- Getting {TypeName}: found a cached type list. - - 145 + {{ template.Count }}