From add3685a5960ccd3a152407d1f5d88510f330c33 Mon Sep 17 00:00:00 2001 From: Loretta Date: Sun, 30 Jun 2024 18:16:29 +0200 Subject: [PATCH] LogViewer improvements, fixes, etc.. --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 3 +- .../SysAdmins/LogViewerGridComponent.razor | 86 ++++++++++++------- .../Shared/Components/Grids/LogViewerGrid.cs | 2 +- .../Server/Controllers/LoggerApiController.cs | 18 ++-- .../ClientSide/UI/LogitemViewerModel.cs | 27 ++++-- 5 files changed, 88 insertions(+), 48 deletions(-) diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 1be45392..aaa6fd11 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -1,5 +1,6 @@ using System.Linq.Expressions; using AyCode.Core.Extensions; +using AyCode.Core.Loggers; using AyCode.Core.Server.Loggers; using AyCode.Database.DbSets.Messages; using AyCode.Database.DbSets.Users; @@ -634,7 +635,7 @@ namespace TIAM.Database.DataLayers.Admins #region Logs - public Task> GetLogItemsAsync() => SessionAsync(ctx => ctx.LogItems.ToList()); + public Task> GetLogItemsAsync(int takeCount = 100) => SessionAsync(ctx => ctx.LogItems.Where(x=>x.LogLevel != LogLevel.Debug && x.LogLevel != LogLevel.Trace && x.LogLevel != LogLevel.Detail).Take(takeCount).ToList()); #endregion diff --git a/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor index 49e5b50e..6965fe54 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/LogViewerGridComponent.razor @@ -21,42 +21,48 @@ @inject IUserDataService UserDataService +@* VirtualScrollingEnabled="true" *@ + @ref="_logViewerGrid" + SignalRClient="AdminSignalRClient" + ShowGroupPanel="true" + PageSize="25" + PageSizeSelectorVisible="true" + PageSizeSelectorItems="@(new int[] { 25, 50, 100, 200, 300, 400, 500 })" + PageSizeSelectorAllRowsItemVisible="true" + ValidationEnabled="false" + CustomizeElement="Grid_CustomizeElement" + ColumnResizeMode="GridColumnResizeMode.NextColumn" + DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto" + ShowFilterRow="true"> - - - - - - - + + + + + + + + + @{ - var a = ((LogitemViewerModel)context.DataItem).AcLogItemClient; + var a = ((LogItemViewerModel)context.DataItem); } -

@a.Text

+
@($"{a.CategoryName}->{a.CallerName}")
+
@($"{a.Text}")

+
Exception:
+
@a.Exception
- - -
-@code { +@code { [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; private LoggerClient _logger; - private LogViewerGrid _logViewerGrid; + private LogViewerGrid _logViewerGrid; protected override void OnInitialized() { @@ -65,13 +71,35 @@ base.OnInitialized(); } - private async Task OnRowClick(GridRowClickEventArgs e) - { - - } - void Grid_CustomizeElement(GridCustomizeElementEventArgs e) { - + if (e.ElementType != GridElementType.DataRow) return; + + var logLevelObject = e.Grid?.GetRowValue(e.VisibleIndex, "LogLevel"); + if (logLevelObject == null) return; + + var levelObject = (LogLevel)logLevelObject; + + switch (levelObject) + { + case LogLevel.Detail: + break; + case LogLevel.Trace: + break; + case LogLevel.Debug: + break; + case LogLevel.Info: + break; + case LogLevel.Suggest: + break; + case LogLevel.Warning: + e.CssClass = "bg-attention"; + break; + case LogLevel.Error: + e.CssClass = "bg-important"; + break; + case LogLevel.Disabled: + break; + } } } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/LogViewerGrid.cs b/TIAMSharedUI/Shared/Components/Grids/LogViewerGrid.cs index a8a08c78..7fd5406a 100644 --- a/TIAMSharedUI/Shared/Components/Grids/LogViewerGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/LogViewerGrid.cs @@ -7,7 +7,7 @@ using TIAMWebApp.Shared.Application.Models.ClientSide.UI; namespace TIAMSharedUI.Shared.Components.Grids; -public class LogViewerGrid : TiamGrid +public class LogViewerGrid : TiamGrid { public LogViewerGrid() : base() { diff --git a/TIAMWebApp/Server/Controllers/LoggerApiController.cs b/TIAMWebApp/Server/Controllers/LoggerApiController.cs index a65b4afd..f18dccd7 100644 --- a/TIAMWebApp/Server/Controllers/LoggerApiController.cs +++ b/TIAMWebApp/Server/Controllers/LoggerApiController.cs @@ -16,9 +16,8 @@ namespace TIAMWebApp.Server.Controllers [ApiController] [EnableCors("_myAllowSpecificOrigins")] [Route("api/v1/[controller]")] - public class LoggerApiController(LoggerToLoggerApiController logger, AdminDal _adminDal) : ControllerBase + public class LoggerApiController(LoggerToLoggerApiController logger, AdminDal adminDal) : ControllerBase { - // = new TIAM.Core.Loggers.Logger(); [AllowAnonymous] @@ -54,16 +53,17 @@ namespace TIAMWebApp.Server.Controllers [HttpGet] [Route(APIUrls.GetAllLogItemsRouteName)] [SignalR(SignalRTags.GetAllLogItems)] - public async Task> GetAllLogItems() + public async Task> GetAllLogItems()//(int takeCount, string filterText) { - var result = await _adminDal.GetLogItemsAsync(); - List returnList = new List(); - for (int i = 0; i < 100; i++ ) + var logItemList = await adminDal.GetLogItemsAsync(1000); + var resultList = new List(logItemList.Count); + + foreach (var logItem in logItemList) { - - returnList.Add(new LogitemViewerModel(Guid.NewGuid(), result[i], result[i].LogHeaderId)); + resultList.Add(new LogItemViewerModel(Guid.NewGuid(), logItem, logItem.LogHeaderId)); } - return returnList; + + return resultList; } } } \ No newline at end of file diff --git a/TIAMWebApp/Shared/Models/ClientSide/UI/LogitemViewerModel.cs b/TIAMWebApp/Shared/Models/ClientSide/UI/LogitemViewerModel.cs index b17bb238..4310083b 100644 --- a/TIAMWebApp/Shared/Models/ClientSide/UI/LogitemViewerModel.cs +++ b/TIAMWebApp/Shared/Models/ClientSide/UI/LogitemViewerModel.cs @@ -1,28 +1,39 @@ using AyCode.Core.Interfaces; +using AyCode.Core.Loggers; using AyCode.Entities.LogItems; using AyCode.Interfaces.Entities; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI { - public class LogitemViewerModel : IId + //[Table("LogItem")] + public class LogItemViewerModel : AcLogItemClient, IId { - public AcLogItemClient AcLogItemClient { get; set; } - - public int LogHeaderId { get; set; } public Guid Id { get ; set; } + public int LogHeaderId { get; set; } + + public LogItemViewerModel() + {} - public LogitemViewerModel(Guid id, AcLogItemClient logItemClient, int logHeaderID) { + public LogItemViewerModel(Guid id, IAcLogItemClient logItemClient, int logHeaderId) { Id = id; - AcLogItemClient = logItemClient; - LogHeaderId = logHeaderID; + TimeStampUtc = logItemClient.TimeStampUtc; + AppType = logItemClient.AppType; + LogLevel= logItemClient.LogLevel; + ThreadId = logItemClient.ThreadId; + CategoryName = logItemClient.CategoryName; + CallerName = logItemClient.CallerName; + Text = logItemClient.Text; + ErrorType = logItemClient.ErrorType; + Exception = logItemClient.Exception; + LogHeaderId = logHeaderId; } - } }