From ae8de9763bd65cca0138a17ae281c18f75666da5 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Wed, 8 Jul 2026 02:04:15 +0900 Subject: [PATCH] Add date filtering to client logs diagnostics --- .../Components/Admin/Pages/ClientLogs.razor | 45 +++++++++------- .../ClientLogs/GetRecentLogsEndpoint.cs | 54 ++++++++++++++----- 2 files changed, 66 insertions(+), 33 deletions(-) diff --git a/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor b/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor index 21e30d1..610d676 100644 --- a/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor +++ b/src/TaxBaik.Web.Client/Components/Admin/Pages/ClientLogs.razor @@ -23,24 +23,6 @@
Info @_summary.InfoCount
} - @if (_groups.Count > 0) - { -
- @foreach (var group in _groups) - { -
-
- @group.Count - @group.Level - @group.Source - @group.Route -
-

@group.Message

- @group.LastSeen -
- } -
- }
+ +
@if (_loading) @@ -76,6 +60,27 @@ } } + @if (_groups.Count > 0) + { +
+ 반복 오류 그룹 보기 +
+ @foreach (var group in _groups) + { +
+
+ @group.Count + @group.Level + @group.Source + @group.Route +
+

@group.Message

+ @group.LastSeen +
+ } +
+
+ } @@ -85,6 +90,8 @@ private bool _loading = true; private string _query = ""; private string _level = ""; + private string _start = ""; + private string _end = ""; private ClientLogSummaryDto? _summary; protected override async Task OnInitializedAsync() @@ -101,7 +108,7 @@ try { _summary = await Http.GetFromJsonAsync("/taxbaik/api/client-logs/summary"); - var url = $"/taxbaik/api/client-logs/recent?q={Uri.EscapeDataString(_query ?? string.Empty)}&level={Uri.EscapeDataString(_level ?? string.Empty)}"; + var url = $"/taxbaik/api/client-logs/recent?q={Uri.EscapeDataString(_query ?? string.Empty)}&level={Uri.EscapeDataString(_level ?? string.Empty)}&start={Uri.EscapeDataString(_start ?? string.Empty)}&end={Uri.EscapeDataString(_end ?? string.Empty)}"; var result = await Http.GetFromJsonAsync>(url); var grouped = await Http.GetFromJsonAsync>("/taxbaik/api/client-logs/groups"); if (result is not null) diff --git a/src/TaxBaik.Web/Endpoints/ClientLogs/GetRecentLogsEndpoint.cs b/src/TaxBaik.Web/Endpoints/ClientLogs/GetRecentLogsEndpoint.cs index 52a0937..a333b0f 100644 --- a/src/TaxBaik.Web/Endpoints/ClientLogs/GetRecentLogsEndpoint.cs +++ b/src/TaxBaik.Web/Endpoints/ClientLogs/GetRecentLogsEndpoint.cs @@ -5,6 +5,7 @@ namespace TaxBaik.Web.Endpoints.ClientLogs; public sealed class RecentClientLogEntry { public string? Timestamp { get; set; } + public DateTimeOffset? OccurredAt { get; set; } public string? Level { get; set; } public string? Source { get; set; } public string? Message { get; set; } @@ -37,6 +38,8 @@ public sealed class GetRecentLogsEndpoint : EndpointWithoutRequest("source"); var route = Query("route"); var term = Query("q"); + var start = ParseDate(Query("start")); + var end = ParseDate(Query("end")); var logDir = Path.Combine(_environment.ContentRootPath, "logs"); if (!Directory.Exists(logDir)) @@ -60,7 +63,7 @@ public sealed class GetRecentLogsEndpoint : EndpointWithoutRequest end)) + { + return false; + } + return true; } + private static DateTimeOffset? ParseDate(string? value) + { + if (string.IsNullOrWhiteSpace(value)) + { + return null; + } + + return DateTimeOffset.TryParse(value, out var parsed) ? parsed : null; + } + private static string? ExtractNamedValue(string text, string prefix) { var index = text.IndexOf(prefix, StringComparison.OrdinalIgnoreCase);