Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public void EventLogAction_SelectEvents_ShouldStoreMultipleEvents()
var action = new EventLogAction.SelectEvents(events);

// Assert
Assert.Equal(2, action.SelectedEvents.Count());
Assert.Equal(2, action.SelectedEvents.Count);
}

[Fact]
Expand Down
39 changes: 39 additions & 0 deletions src/EventLogExpert.UI.Tests/TestUtils/LoggerUtils.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// // Copyright (c) Microsoft Corporation.
// // Licensed under the MIT License.

using EventLogExpert.Eventing.Helpers;
using Microsoft.Extensions.Logging;

namespace EventLogExpert.UI.Tests.TestUtils;

internal static class LoggerUtils
{
internal sealed class RecordingTraceLogger : ITraceLogger
{
public List<string> CriticalMessages { get; } = [];

public List<string> DebugMessages { get; } = [];

public List<string> ErrorMessages { get; } = [];

public List<string> InfoMessages { get; } = [];

public LogLevel MinimumLevel => LogLevel.Trace;

public List<string> TraceMessages { get; } = [];

public List<string> WarnMessages { get; } = [];

public void Critical(CriticalLogHandler handler) => CriticalMessages.Add(handler.ToStringAndClear());

public void Debug(DebugLogHandler handler) => DebugMessages.Add(handler.ToStringAndClear());

public void Error(ErrorLogHandler handler) => ErrorMessages.Add(handler.ToStringAndClear());

public void Info(InfoLogHandler handler) => InfoMessages.Add(handler.ToStringAndClear());

public void Trace(TraceLogHandler handler) => TraceMessages.Add(handler.ToStringAndClear());

public void Warn(WarnLogHandler handler) => WarnMessages.Add(handler.ToStringAndClear());
}
}
4 changes: 2 additions & 2 deletions src/EventLogExpert.UI/Store/EventLog/EventLogAction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public sealed record SelectEvent(
bool IsMultiSelect = false,
bool ShouldStaySelected = false);

public sealed record SelectEvents(IEnumerable<DisplayEventModel> SelectedEvents);
public sealed record SelectEvents(IReadOnlyCollection<DisplayEventModel> SelectedEvents);
Comment thread
jschick04 marked this conversation as resolved.

/// <summary>
/// Replaces the entire selection with the supplied events, preserving input order
Expand All @@ -47,7 +47,7 @@ public sealed record SelectEvents(IEnumerable<DisplayEventModel> SelectedEvents)
/// <param name="SelectedEvent">The new focused event, or null to clear focus. Does not
/// need to be a member of <paramref name="SelectedEvents"/>.</param>
public sealed record SetSelectedEvents(
IEnumerable<DisplayEventModel> SelectedEvents,
IReadOnlyCollection<DisplayEventModel> SelectedEvents,
Comment thread
jschick04 marked this conversation as resolved.
DisplayEventModel? SelectedEvent);

public sealed record SetContinuouslyUpdate(bool ContinuouslyUpdate);
Expand Down
68 changes: 20 additions & 48 deletions src/EventLogExpert.UI/Store/LoggingMiddleware.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
using EventLogExpert.Eventing.Helpers;
using EventLogExpert.UI.Store.EventLog;
using EventLogExpert.UI.Store.EventTable;
using EventLogExpert.UI.Store.FilterCache;
using EventLogExpert.UI.Store.FilterGroup;
using EventLogExpert.UI.Store.FilterPane;
using EventLogExpert.UI.Store.StatusBar;
using Fluxor;
using System.Text.Json;
Expand All @@ -16,69 +13,44 @@ namespace EventLogExpert.UI.Store;
public sealed class LoggingMiddleware(ITraceLogger debugLogger) : Middleware
{
private readonly ITraceLogger _debugLogger = debugLogger;
private readonly JsonSerializerOptions _serializerOptions = new();

public override void BeforeDispatch(object action)
{
switch (action)
{
case EventLogAction.LoadEvents loadEventsAction:
_debugLogger.Debug($"Action: {action.GetType()} with {loadEventsAction.Events.Count()} events.");
_debugLogger.Debug($"Action: {action.GetType()} with {loadEventsAction.Events.Count} events.");
break;
case EventLogAction.AddEvent addEventsAction:
_debugLogger.Debug($"Action: {action.GetType()} with {addEventsAction.NewEvent.Source} event ID {addEventsAction.NewEvent.Id}.");
case EventLogAction.LoadEventsPartial loadEventsPartialAction:
_debugLogger.Debug($"Action: {action.GetType()} with {loadEventsPartialAction.Events.Count} events.");
break;
case EventLogAction.AddEvent addEventAction:
_debugLogger.Debug($"Action: {action.GetType()} with {addEventAction.NewEvent.Source} event ID {addEventAction.NewEvent.Id}.");
break;
case EventLogAction.OpenLog openLogAction:
_debugLogger.Info($"Action: {action.GetType()} with {openLogAction.LogName} log type {openLogAction.PathType}.");
break;
Comment thread
jschick04 marked this conversation as resolved.
case EventLogAction.CloseLog:
case EventLogAction.CloseAll:
_debugLogger.Info($"Action: {action.GetType()}.");
break;
case EventLogAction.AddEventBuffered:
case EventLogAction.AddEventSuccess:
case EventLogAction.SetFilters:
case EventTableAction.AddTable:
case EventTableAction.LoadColumnsCompleted:
case EventTableAction.UpdateDisplayedEvents:
case EventTableAction.UpdateTable:
case FilterCacheAction.AddFavoriteFilterCompleted:
case FilterCacheAction.AddRecentFilterCompleted:
case FilterCacheAction.ImportFavorites:
case FilterCacheAction.LoadFiltersCompleted:
case FilterCacheAction.RemoveFavoriteFilterCompleted:
case FilterGroupAction.AddGroup:
case FilterGroupAction.ImportGroups:
case FilterGroupAction.LoadGroupsSuccess:
case FilterGroupAction.SetFilter:
case FilterGroupAction.SetGroup:
case FilterPaneAction.AddFilter:
case FilterPaneAction.ApplyFilterGroup:
case FilterPaneAction.SetFilter:
case FilterPaneAction.SetFilterDateRange:
_debugLogger.Debug($"Action: {action.GetType()}.");
break;
case EventLogAction.SelectEvent selectEventAction:
_debugLogger.Debug($"Action: {nameof(EventLogAction.SelectEvent)} selected {selectEventAction.SelectedEvent?.Source} event ID {selectEventAction.SelectedEvent?.Id}.");

_debugLogger.Debug($"Action: {nameof(EventLogAction.SelectEvent)} selected {selectEventAction.SelectedEvent.Source} event ID {selectEventAction.SelectedEvent.Id}.");
break;
case EventLogAction.SelectEvents selectEventsAction:
_debugLogger.Debug($"Action: {nameof(EventLogAction.SelectEvents)} selected {selectEventsAction.SelectedEvents.Count()} events");

_debugLogger.Debug($"Action: {nameof(EventLogAction.SelectEvents)} selected {selectEventsAction.SelectedEvents.Count} events.");
break;
case EventLogAction.SetSelectedEvents setSelectedEventsAction:
_debugLogger.Debug($"Action: {nameof(EventLogAction.SetSelectedEvents)} set {setSelectedEventsAction.SelectedEvents.Count} events.");
break;
case EventTableAction.AppendTableEvents appendTableEventsAction:
_debugLogger.Debug($"Action: {action.GetType()} with {appendTableEventsAction.Events.Count} events for log {appendTableEventsAction.LogId}.");
break;
case EventTableAction.AppendTableEventsBatch appendTableEventsBatchAction:
var totalAppendEvents = appendTableEventsBatchAction.EventsByLog.Values.Sum(eventsForLog => eventsForLog.Count);
_debugLogger.Debug($"Action: {action.GetType()} with {totalAppendEvents} events across {appendTableEventsBatchAction.EventsByLog.Count} logs.");
break;
case StatusBarAction.SetEventsLoading:
_debugLogger.Debug($"Action: {action.GetType()} {JsonSerializer.Serialize(action, _serializerOptions)}");
_debugLogger.Debug($"Action: {action.GetType()} {JsonSerializer.Serialize(action)}");
break;
default:
try
{
_debugLogger.Debug($"Action: {action.GetType()} {JsonSerializer.Serialize(action, _serializerOptions)}");
}
catch
{
_debugLogger.Debug($"Action: {action.GetType()}. Could not serialize payload.");
}

_debugLogger.Debug($"Action: {action.GetType()}.");
break;
Comment thread
jschick04 marked this conversation as resolved.
Comment thread
jschick04 marked this conversation as resolved.
}
}
Expand Down
Loading