LogViewer improvements, fixes, etc..

This commit is contained in:
Loretta 2024-06-30 18:16:29 +02:00
parent 7da67aa554
commit add3685a59
5 changed files with 88 additions and 48 deletions

View File

@ -1,5 +1,6 @@
using System.Linq.Expressions; using System.Linq.Expressions;
using AyCode.Core.Extensions; using AyCode.Core.Extensions;
using AyCode.Core.Loggers;
using AyCode.Core.Server.Loggers; using AyCode.Core.Server.Loggers;
using AyCode.Database.DbSets.Messages; using AyCode.Database.DbSets.Messages;
using AyCode.Database.DbSets.Users; using AyCode.Database.DbSets.Users;
@ -634,7 +635,7 @@ namespace TIAM.Database.DataLayers.Admins
#region Logs #region Logs
public Task<List<AcLogItem>> GetLogItemsAsync() => SessionAsync(ctx => ctx.LogItems.ToList()); public Task<List<AcLogItem>> 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 #endregion

View File

@ -21,42 +21,48 @@
@inject IUserDataService UserDataService @inject IUserDataService UserDataService
@* VirtualScrollingEnabled="true" *@
<LogViewerGrid Logger="_logger" <LogViewerGrid Logger="_logger"
@ref="_logViewerGrid" @ref="_logViewerGrid"
SignalRClient="AdminSignalRClient" SignalRClient="AdminSignalRClient"
PageSize="10" ShowGroupPanel="true"
ValidationEnabled="false" PageSize="25"
CustomizeElement="Grid_CustomizeElement" PageSizeSelectorVisible="true"
EditMode="GridEditMode.EditForm" PageSizeSelectorItems="@(new int[] { 25, 50, 100, 200, 300, 400, 500 })"
ColumnResizeMode="GridColumnResizeMode.NextColumn" PageSizeSelectorAllRowsItemVisible="true"
DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode" ValidationEnabled="false"
ShowFilterRow="true"> CustomizeElement="Grid_CustomizeElement"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto"
ShowFilterRow="true">
<Columns> <Columns>
<DxGridDataColumn FieldName="TimeStampUtc" Caption="TimeStampUtc" SortIndex="0" SortOrder="GridColumnSortOrder.Descending" DisplayFormat="g" Width="130" />
<DxGridDataColumn FieldName="AcLogItemClient.Id"/> <DxGridDataColumn FieldName="AppType" Caption="AppType" Width="80px" />
<DxGridDataColumn FieldName="AcLogItemClient.CategoryName" /> <DxGridDataColumn FieldName="LogLevel" Caption="LogLevel" Width="80px" />
<DxGridDataColumn FieldName="AcLogItemClient.CallerName" /> <DxGridDataColumn FieldName="ThreadId" Caption="ThId" Width="55px" />
<DxGridDataColumn Width="80px" FieldName="AcLogItemClient.LogLevel" /> <DxGridDataColumn FieldName="CategoryName" Width="170" />
<DxGridDataColumn FieldName="CallerName" Width="200" />
<DxGridDataColumn FieldName="Text" />
<DxGridDataColumn FieldName="Exception" Width="200" />
<DxGridDataColumn FieldName="ErrorType" Visible="false" />
</Columns> </Columns>
<DetailRowTemplate> <DetailRowTemplate>
@{ @{
var a = ((LogitemViewerModel)context.DataItem).AcLogItemClient; var a = ((LogItemViewerModel)context.DataItem);
} }
<p>@a.Text</p> <div>@($"{a.CategoryName}->{a.CallerName}")</div>
<div>@($"{a.Text}")</div><br/>
<div style="font-weight: bold;">Exception:</div>
<div style="word-wrap: break-word;">@a.Exception</div>
</DetailRowTemplate> </DetailRowTemplate>
</LogViewerGrid> </LogViewerGrid>
@code { @code {
[Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never;
private LoggerClient<LogViewerGridComponent> _logger; private LoggerClient<LogViewerGridComponent> _logger;
private LogViewerGrid _logViewerGrid; private LogViewerGrid _logViewerGrid;
protected override void OnInitialized() protected override void OnInitialized()
{ {
@ -65,13 +71,35 @@
base.OnInitialized(); base.OnInitialized();
} }
private async Task OnRowClick(GridRowClickEventArgs e)
{
}
void Grid_CustomizeElement(GridCustomizeElementEventArgs 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;
}
} }
} }

View File

@ -7,7 +7,7 @@ using TIAMWebApp.Shared.Application.Models.ClientSide.UI;
namespace TIAMSharedUI.Shared.Components.Grids; namespace TIAMSharedUI.Shared.Components.Grids;
public class LogViewerGrid : TiamGrid<LogitemViewerModel> public class LogViewerGrid : TiamGrid<LogItemViewerModel>
{ {
public LogViewerGrid() : base() public LogViewerGrid() : base()
{ {

View File

@ -16,9 +16,8 @@ namespace TIAMWebApp.Server.Controllers
[ApiController] [ApiController]
[EnableCors("_myAllowSpecificOrigins")] [EnableCors("_myAllowSpecificOrigins")]
[Route("api/v1/[controller]")] [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<LoggerApiController>(); // = new TIAM.Core.Loggers.Logger<LoggerApiController>();
[AllowAnonymous] [AllowAnonymous]
@ -54,16 +53,17 @@ namespace TIAMWebApp.Server.Controllers
[HttpGet] [HttpGet]
[Route(APIUrls.GetAllLogItemsRouteName)] [Route(APIUrls.GetAllLogItemsRouteName)]
[SignalR(SignalRTags.GetAllLogItems)] [SignalR(SignalRTags.GetAllLogItems)]
public async Task<List<LogitemViewerModel>> GetAllLogItems() public async Task<List<LogItemViewerModel>> GetAllLogItems()//(int takeCount, string filterText)
{ {
var result = await _adminDal.GetLogItemsAsync(); var logItemList = await adminDal.GetLogItemsAsync(1000);
List<LogitemViewerModel> returnList = new List<LogitemViewerModel>(); var resultList = new List<LogItemViewerModel>(logItemList.Count);
for (int i = 0; i < 100; i++ )
foreach (var logItem in logItemList)
{ {
resultList.Add(new LogItemViewerModel(Guid.NewGuid(), logItem, logItem.LogHeaderId));
returnList.Add(new LogitemViewerModel(Guid.NewGuid(), result[i], result[i].LogHeaderId));
} }
return returnList;
return resultList;
} }
} }
} }

View File

@ -1,28 +1,39 @@
using AyCode.Core.Interfaces; using AyCode.Core.Interfaces;
using AyCode.Core.Loggers;
using AyCode.Entities.LogItems; using AyCode.Entities.LogItems;
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI namespace TIAMWebApp.Shared.Application.Models.ClientSide.UI
{ {
public class LogitemViewerModel : IId<Guid> //[Table("LogItem")]
public class LogItemViewerModel : AcLogItemClient, IId<Guid>
{ {
public AcLogItemClient AcLogItemClient { get; set; }
public int LogHeaderId { get; set; }
public Guid Id { 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; Id = id;
AcLogItemClient = logItemClient; TimeStampUtc = logItemClient.TimeStampUtc;
LogHeaderId = logHeaderID; 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;
} }
} }
} }