From 96d76c211c849e78a06da6db5ec7f3639bb3d09c Mon Sep 17 00:00:00 2001 From: Warren Date: Mon, 3 Sep 2018 21:29:13 +0100 Subject: [PATCH] Adds in support for log level filtering - rather than using expressions --- src/Umbraco.Core/Logging/Viewer/ILogViewer.cs | 3 ++- .../Logging/Viewer/LogViewerSourceBase.cs | 15 ++++++++++++++- src/Umbraco.Web/Editors/LogViewerController.cs | 12 ++++++------ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/Logging/Viewer/ILogViewer.cs b/src/Umbraco.Core/Logging/Viewer/ILogViewer.cs index 2af1313097..ed5ca8f806 100644 --- a/src/Umbraco.Core/Logging/Viewer/ILogViewer.cs +++ b/src/Umbraco.Core/Logging/Viewer/ILogViewer.cs @@ -36,7 +36,8 @@ namespace Umbraco.Core.Logging.Viewer int pageNumber = 1, int pageSize = 100, Direction orderDirection = Direction.Descending, - string filterExpression = null); + string filterExpression = null, + string[] logLevels = null); } } diff --git a/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs b/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs index 089c83f33e..2270143da2 100644 --- a/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs +++ b/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs @@ -45,7 +45,8 @@ namespace Umbraco.Core.Logging.Viewer public PagedResult GetLogs(DateTimeOffset startDate, DateTimeOffset endDate, int pageNumber = 1, int pageSize = 100, Direction orderDirection = Direction.Descending, - string filterExpression = null) + string filterExpression = null, + string[] logLevels = null) { //Get all logs into memory (Not sure this good or not) var logs = GetAllLogs(startDate, endDate); @@ -60,6 +61,18 @@ namespace Umbraco.Core.Logging.Viewer logs = logs.Where(filter); } + //This is user used the checkbox UI to toggle which log levels they wish to see + //If an empty array - its implied all levels to be viewed + if(logLevels.Length > 0) + { + var logsAfterLevelFilters = new List(); + foreach (var level in logLevels) + { + logsAfterLevelFilters.AddRange(logs.Where(x => x.Level.ToString() == level)); + } + logs = logsAfterLevelFilters; + } + long totalRecords = logs.Count(); long pageIndex = pageNumber - 1; diff --git a/src/Umbraco.Web/Editors/LogViewerController.cs b/src/Umbraco.Web/Editors/LogViewerController.cs index 319e7a6dd9..7cf3125ff5 100644 --- a/src/Umbraco.Web/Editors/LogViewerController.cs +++ b/src/Umbraco.Web/Editors/LogViewerController.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using System.Web.Mvc; +using System.Web.Http; using Umbraco.Core.Logging.Viewer; using Umbraco.Core.Models; using Umbraco.Core.Persistence.DatabaseModelDefinitions; @@ -24,26 +24,26 @@ namespace Umbraco.Web.Editors [HttpGet] public int GetNumberOfErrors() { - return _logViewer.GetNumberOfErrors(startDate: DateTime.Now, endDate: DateTime.Now); + return _logViewer.GetNumberOfErrors(startDate: DateTime.Now.AddDays(-1), endDate: DateTime.Now); } [HttpGet] public LogLevelCounts GetLogLevelCounts() { - return _logViewer.GetLogLevelCounts(startDate: DateTime.Now, endDate: DateTime.Now); + return _logViewer.GetLogLevelCounts(startDate: DateTime.Now.AddDays(-1), endDate: DateTime.Now); } [HttpGet] public IEnumerable GetCommonLogMessages() { - return _logViewer.GetCommonLogMessages(startDate: DateTime.Now, endDate: DateTime.Now); + return _logViewer.GetCommonLogMessages(startDate: DateTime.Now.AddDays(-1), endDate: DateTime.Now); } [HttpGet] - public PagedResult GetLogs(string orderDirection = "Descending", int pageNumber = 1, string filterExpression = null) + public PagedResult GetLogs(string orderDirection = "Descending", int pageNumber = 1, string filterExpression = null, [FromUri]string[] logLevels = null) { var direction = orderDirection == "Descending" ? Direction.Descending : Direction.Ascending; - return _logViewer.GetLogs(startDate: DateTime.Now, endDate: DateTime.Now, filterExpression: filterExpression, pageNumber: pageNumber, orderDirection: direction); + return _logViewer.GetLogs(startDate: DateTime.Now.AddDays(-1), endDate: DateTime.Now, filterExpression: filterExpression, pageNumber: pageNumber, orderDirection: direction, logLevels: logLevels); } }