LogViewer improvements, fixes, etc..
This commit is contained in:
parent
7da67aa554
commit
add3685a59
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue