@page "/logs"
@using BLAIzor.Models
@inject ApplicationDbContext Db
@attribute [Authorize]
📋 Application Logs
📊 Log Summary
@code {
private List logs = new();
private int totalCount = 0;
private string? selectedSeverity;
private DateTime? startDate;
private DateTime? endDate;
private List severities = new() { "Info", "Warning", "Error" };
private List logChartData = new();
void OnSeriesClick(SeriesClickEventArgs args)
{
// console.Log(args);
}
private async Task LoadData(LoadDataArgs args)
{
var query = Db.Logs.AsQueryable();
if (!string.IsNullOrEmpty(selectedSeverity))
query = query.Where(l => l.Severity == selectedSeverity);
if (startDate.HasValue)
query = query.Where(l => l.Timestamp >= startDate.Value);
if (endDate.HasValue)
query = query.Where(l => l.Timestamp <= endDate.Value);
totalCount = query.Count();
logs = query
.OrderByDescending(l => l.Timestamp)
.Skip(args.Skip ?? 0)
.Take(args.Top ?? 10).ToList();
await LoadChartData();
}
private async Task LoadLogs()
{
await LoadData(new LoadDataArgs { Skip = 0, Top = 10 });
}
private async Task LoadChartData()
{
var query = Db.Logs.AsQueryable();
if (!string.IsNullOrEmpty(selectedSeverity))
query = query.Where(l => l.Severity == selectedSeverity);
if (startDate.HasValue)
query = query.Where(l => l.Timestamp >= startDate.Value);
if (endDate.HasValue)
query = query.Where(l => l.Timestamp <= endDate.Value);
logChartData = query
.GroupBy(l => l.Severity)
.Select(g => new LogChartItem
{
Severity = g.Key,
Count = g.Count()
})
.ToList();
}
public class LogChartItem
{
public string Severity { get; set; } = "";
public int Count { get; set; }
}
}