@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; } } }