Restructure Eventing into Common/<Domain> with folder and symbol renames#518
Draft
jschick04 wants to merge 2 commits intojschick/eventing-test-isolation-slnffrom
Draft
Restructure Eventing into Common/<Domain> with folder and symbol renames#518jschick04 wants to merge 2 commits intojschick/eventing-test-isolation-slnffrom
jschick04 wants to merge 2 commits intojschick/eventing-test-isolation-slnffrom
Conversation
…ply branch-wide hygiene pass
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors the EventLogExpert.Eventing domain into a Common/<Domain>/ structure and performs a coordinated rename sweep across production and test code to better align names with Win32 semantics and the updated folder topology.
Changes:
- Restructures Eventing types into
Common/Channels,Common/Events, andCommon/Databases, with corresponding namespace updates across UI, EventDbTool, and tests. - Renames key symbols for clarity/accuracy (e.g.,
PathType→LogPathType,LogName/FilePath→Channel/File,ResolveProviderDetails→LoadProviderDetails,ClearLog→ClearXmlCacheForLog, loggingInfo/Warn→Information/Warning). - Adjusts provider-message loading behavior to fall back to modern message metadata when legacy loading fails or yields zero messages, and updates/extends tests accordingly.
Reviewed changes
Copilot reviewed 129 out of 129 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Unit/EventLogExpert.UI.Tests/TestUtils/LoggerUtils.cs | Updates test logger API to Information/Warning handler methods. |
| tests/Unit/EventLogExpert.UI.Tests/TestUtils/EventUtils.cs | Switches test event creation to ResolvedEvent + LogPathType. |
| tests/Unit/EventLogExpert.UI.Tests/TestUtils/DatabaseSeedUtils.cs | Moves DB seeding to ProviderDbContext / new namespace. |
| tests/Unit/EventLogExpert.UI.Tests/Store/FilterPane/FilterPaneEffectsTests.cs | Updates Eventing type usage and refactors filter-related tests around renamed effects. |
| tests/Unit/EventLogExpert.UI.Tests/Services/FilterCategoryItemsCacheTests.cs | Updates Eventing type usage and reorders/adds cache snapshot test coverage. |
| tests/Unit/EventLogExpert.UI.Tests/Services/DebugLogServiceTests.cs | Updates logger method names and reshuffles/updates log-level behavior tests. |
| tests/Unit/EventLogExpert.UI.Tests/Services/DatabaseServiceTests.cs | Updates DB context naming and warning handler usage; adjusts backup-related classification tests. |
| tests/Unit/EventLogExpert.UI.Tests/Services/BannerServiceTests.cs | Updates warning handler usage assertions. |
| tests/Unit/EventLogExpert.UI.Tests/DateRangeDefaultsTests.cs | Updates types to ResolvedEvent + LogPathType. |
| tests/Unit/EventLogExpert.Eventing.Tests/TestUtils/EventUtils.cs | Removes old models import; aligns utilities with updated namespaces. |
| tests/Unit/EventLogExpert.Eventing.Tests/Resolvers/VersatileEventResolverTests.cs | Updates resolver/db abstractions (IActiveDatabasePathsProvider, ProviderDbContext) and renames LoadProviderDetails. |
| tests/Unit/EventLogExpert.Eventing.Tests/Resolvers/LocalProviderEventResolverTests.cs | Renames/updates resolver methods and namespaces. |
| tests/Unit/EventLogExpert.Eventing.Tests/Resolvers/EventXmlResolverTests.cs | Updates to ResolvedEvent + LogPathType and renamed cache-clear API. |
| tests/Unit/EventLogExpert.Eventing.Tests/Resolvers/EventResolverCacheTests.cs | Updates namespace from EventResolvers → Resolvers. |
| tests/Unit/EventLogExpert.Eventing.Tests/Readers/LogNamesTests.cs | Removes old LogNames tests (replaced by LogChannelNames tests). |
| tests/Unit/EventLogExpert.Eventing.Tests/Providers/ProviderDetailsTests.cs | Removes stale models import after provider model moves. |
| tests/Unit/EventLogExpert.Eventing.Tests/Providers/EventMessageProviderTests.cs | Updates static loader name to LoadMessagesFromFiles. |
| tests/Unit/EventLogExpert.Eventing.Tests/ProviderDatabase/ProviderJsonContextTests.cs | Updates provider DB namespaces and test ordering; adds dictionary round-trip test placement. |
| tests/Unit/EventLogExpert.Eventing.Tests/ProviderDatabase/ProviderDetailsMergerTests.cs | Updates provider DB namespaces. |
| tests/Unit/EventLogExpert.Eventing.Tests/ProviderDatabase/CompressedJsonValueConverterTests.cs | Updates provider DB namespaces. |
| tests/Unit/EventLogExpert.Eventing.Tests/Common/Databases/DatabasePathSorterTests.cs | Adds coverage for DatabasePathSorter ordering rules. |
| tests/Unit/EventLogExpert.Eventing.Tests/Common/Channels/LogChannelNamesTests.cs | Adds coverage for LogChannelNames constants/sets. |
| tests/Unit/EventLogExpert.Eventing.Tests/Common/Channels/LogChannelMethodsTests.cs | Moves log menu-path logic tests to Eventing.Common.Channels. |
| tests/Unit/EventLogExpert.EventDbTool.Tests/UpgradeDatabaseCommandTests.cs | Updates DB context and logger handler method names. |
| tests/Unit/EventLogExpert.EventDbTool.Tests/TestUtils/DatabaseTestUtils.cs | Updates DB context naming (ProviderDbContext). |
| tests/Unit/EventLogExpert.EventDbTool.Tests/DiffDatabaseCommandTests.cs | Updates DB context naming (ProviderDbContext). |
| tests/Integration/EventLogExpert.Eventing.IntegrationTests/Readers/SmallEvtxFixture.cs | Updates reader flags to LogPathType.File. |
| tests/Integration/EventLogExpert.Eventing.IntegrationTests/Readers/EventLogWatcherTests.cs | Updates reader flags to LogPathType.Channel and reorders a few tests. |
| tests/Integration/EventLogExpert.Eventing.IntegrationTests/Readers/EventLogSessionTests.cs | Updates GetLogInformation calls to LogPathType.Channel and test ordering. |
| tests/Integration/EventLogExpert.Eventing.IntegrationTests/Readers/EventLogInformationTests.cs | Updates constructor calls to LogPathType.Channel. |
| tests/Integration/EventLogExpert.Eventing.IntegrationTests/Providers/RegistryProviderTests.cs | Updates admin-only set reference to LogChannelNames.AdminOnlyLiveChannels. |
| tests/Integration/EventLogExpert.Eventing.IntegrationTests/Providers/EventMessageProviderIntegrationTests.cs | Updates static loader name; adds test for “legacy empty → modern fallback” semantics. |
| src/EventLogExpert/Services/MauiMenuActionService.cs | Updates LogPathType usage, live-channel filtering, and warning/info logger calls. |
| src/EventLogExpert/Services/ClipboardService.cs | Switches selection types to ResolvedEvent and updates resolver namespace. |
| src/EventLogExpert/MauiProgram.cs | Updates DI registrations to LogWatcherService + IActiveDatabasePathsProvider and resolver namespaces. |
| src/EventLogExpert/MainPage.xaml.cs | Updates dropped/CLI file open tuples to LogPathType.File. |
| src/EventLogExpert/Components/Sections/StatusBar.razor | Updates live-log detection to LogPathType.Channel. |
| src/EventLogExpert/Components/Sections/SplitLogTabPane.razor.cs | Renames PathType field usage to LogPathType and refactors tab naming/tooltip logic. |
| src/EventLogExpert/Components/Sections/EventTable.razor | Switches table virtualization item type to ResolvedEvent. |
| src/EventLogExpert/Components/Sections/DetailsPane.razor.cs | Switches selection type to ResolvedEvent and updates resolver imports. |
| src/EventLogExpert.UI/Store/LoggingMiddleware.cs | Updates log message to use LogPathType and Information. |
| src/EventLogExpert.UI/Store/EventTable/EventTableState.cs | Updates displayed event type to ResolvedEvent. |
| src/EventLogExpert.UI/Store/EventTable/EventTableReducers.cs | Updates event types and LogPathType plumbing throughout reducers. |
| src/EventLogExpert.UI/Store/EventTable/EventTableAction.cs | Updates action payload types to ResolvedEvent. |
| src/EventLogExpert.UI/Store/EventLog/LogWatcherService.cs | Renames service to LogWatcherService and updates log calls + comments to new method names. |
| src/EventLogExpert.UI/Store/EventLog/ILogReloadCoordinator.cs | Updates reopen snapshot type to LogPathType. |
| src/EventLogExpert.UI/Store/EventLog/EventLogState.cs | Updates selection/buffer types to ResolvedEvent. |
| src/EventLogExpert.UI/Store/EventLog/EventLogReducers.cs | Updates reducer logic to ResolvedEvent + LogPathType; reorders some reducer helpers. |
| src/EventLogExpert.UI/Store/EventLog/EventLogEffects.cs | Updates loader/filter/watcher flow for renamed APIs (ClearXmlCacheForLog, LoadProviderDetails, LogPathType). |
| src/EventLogExpert.UI/Store/EventLog/EventLogAction.cs | Updates action types and OpenLog signature to LogPathType. |
| src/EventLogExpert.UI/Services/UpdateService.cs | Updates warning logger call to Warning. |
| src/EventLogExpert.UI/Services/FilterService.cs | Updates filtering pipeline to ResolvedEvent collections. |
| src/EventLogExpert.UI/Services/FilterCompiler.cs | Updates dynamic expression compilation target to ResolvedEvent. |
| src/EventLogExpert.UI/Services/FilterCategoryItemsCache.cs | Updates cache value computations to ResolvedEvent and minor doc formatting. |
| src/EventLogExpert.UI/Services/DebugLogService.cs | Renames logger methods (Information, Warning) and reorders helper/mutex/name logic. |
| src/EventLogExpert.UI/Services/BannerService.cs | Updates warning logger call to Warning. |
| src/EventLogExpert.UI/Services/ApplicationRestartService.cs | Updates info logger call to Information. |
| src/EventLogExpert.UI/Models/EventTableModel.cs | Renames table path discriminator to LogPathType. |
| src/EventLogExpert.UI/Models/EventLogData.cs | Updates event list type to ResolvedEvent and path discriminator to LogPathType. |
| src/EventLogExpert.UI/Models/EventFilter.cs | Updates XML filter doc reference and keeps RequiresXml semantics. |
| src/EventLogExpert.UI/Models/CompiledFilter.cs | Updates compiled predicate type to ResolvedEvent. |
| src/EventLogExpert.UI/Interfaces/IFilterService.cs | Updates filter service API to ResolvedEvent. |
| src/EventLogExpert.UI/FilterMethods.cs | Updates sort/merge/filter extension logic to ResolvedEvent. |
| src/EventLogExpert.Eventing/Resolvers/SeverityFormatter.cs | Renames/moves severity formatting helper (Severity → SeverityFormatter.Format). |
| src/EventLogExpert.Eventing/Resolvers/IEventXmlResolver.cs | Adds updated XML resolver interface for ResolvedEvent + renamed clear method. |
| src/EventLogExpert.Eventing/Resolvers/IEventResolverCache.cs | Moves cache interface into Resolvers namespace. |
| src/EventLogExpert.Eventing/Resolvers/IEventResolver.cs | Adds updated resolver interface (LoadProviderDetails, ResolvedEvent). |
| src/EventLogExpert.Eventing/Resolvers/EventXmlResolver.cs | Updates resolver namespace/types and renames ClearLog → ClearXmlCacheForLog. |
| src/EventLogExpert.Eventing/Resolvers/EventResolverCache.cs | Moves cache implementation into Resolvers namespace. |
| src/EventLogExpert.Eventing/Resolvers/EventResolverBase.cs | Updates to create ResolvedEvent, uses SeverityFormatter, and updates warning logs. |
| src/EventLogExpert.Eventing/Resolvers/EventResolver.cs | Updates DB abstractions/types (ProviderDbContext, IActiveDatabasePathsProvider) and uses DatabasePathSorter. |
| src/EventLogExpert.Eventing/Readers/PathType.cs | Removes old enum (replaced by LogPathType). |
| src/EventLogExpert.Eventing/Readers/EventRecord.cs | Moves EventRecord into Readers and renames PathType → LogPathType. |
| src/EventLogExpert.Eventing/Readers/EventLogWatcher.cs | Updates query flags to LogPathType.Channel and renames callback method for clarity. |
| src/EventLogExpert.Eventing/Readers/EventLogSession.cs | Updates GetLogInformation signature to LogPathType. |
| src/EventLogExpert.Eventing/Readers/EventLogReader.cs | Updates ctor flag type and sets EventRecord.LogPathType. |
| src/EventLogExpert.Eventing/Readers/EventLogInformation.cs | Updates ctor flag type and renames private accessor to GetLogProperty. |
| src/EventLogExpert.Eventing/Providers/RegistryProvider.cs | Updates admin-only set reference to LogChannelNames.AdminOnlyLiveChannels. |
| src/EventLogExpert.Eventing/Providers/ProviderMetadata.cs | Removes stale models import. |
| src/EventLogExpert.Eventing/Providers/ProviderDetails.cs | Removes stale models import. |
| src/EventLogExpert.Eventing/Providers/MessageModel.cs | Moves MessageModel into Providers namespace. |
| src/EventLogExpert.Eventing/Providers/EventModel.cs | Moves EventModel into Providers namespace and reorders members. |
| src/EventLogExpert.Eventing/Providers/EventMetadata.cs | Moves EventMetadata into Providers namespace. |
| src/EventLogExpert.Eventing/Providers/EventMessageProvider.cs | Renames static message loader, adds TryLoadMessages, and updates fallback behavior to modern metadata. |
| src/EventLogExpert.Eventing/ProviderDatabase/SchemaStateMessages.cs | Renames message helper to SchemaStateMessages and moves namespace. |
| src/EventLogExpert.Eventing/ProviderDatabase/ProviderJsonSerializerOptions.cs | Moves namespace and minor formatting adjustments. |
| src/EventLogExpert.Eventing/ProviderDatabase/ProviderJsonContext.cs | Updates JSON context to new Providers models namespace. |
| src/EventLogExpert.Eventing/ProviderDatabase/ProviderDetailsMerger.cs | Moves namespace and minor formatting tweaks. |
| src/EventLogExpert.Eventing/ProviderDatabase/ProviderDbContext.cs | Renames DbContext type and updates log/error message helpers. |
| src/EventLogExpert.Eventing/ProviderDatabase/ProviderDatabaseSchemaVersion.cs | Moves namespace. |
| src/EventLogExpert.Eventing/ProviderDatabase/ProviderDatabaseSchemaState.cs | Moves namespace. |
| src/EventLogExpert.Eventing/ProviderDatabase/DatabaseUpgradeException.cs | Moves namespace. |
| src/EventLogExpert.Eventing/ProviderDatabase/CompressedJsonValueConverter.cs | Moves namespace and reorders static helper methods. |
| src/EventLogExpert.Eventing/Logging/WarningLogHandler.cs | Renames handler struct to WarningLogHandler. |
| src/EventLogExpert.Eventing/Logging/TraceLogger.cs | Updates interface method names to Information/Warning and reorders methods. |
| src/EventLogExpert.Eventing/Logging/ITraceLogger.cs | Renames logger API methods to match LogLevel names. |
| src/EventLogExpert.Eventing/Logging/InformationLogHandler.cs | Renames handler struct to InformationLogHandler. |
| src/EventLogExpert.Eventing/Interop/NativeMethods.Evt.cs | Updates P/Invoke signatures to use LogPathType. |
| src/EventLogExpert.Eventing/EventResolvers/IEventXmlResolver.cs | Removes old interface (replaced under Resolvers). |
| src/EventLogExpert.Eventing/EventResolvers/IEventResolver.cs | Removes old interface (replaced under Resolvers). |
| src/EventLogExpert.Eventing/EventResolvers/IDatabaseCollectionProvider.cs | Removes old DB collection interface (replaced by IActiveDatabasePathsProvider). |
| src/EventLogExpert.Eventing/Common/Events/SeverityLevel.cs | Moves enum into Common/Events. |
| src/EventLogExpert.Eventing/Common/Events/ResolvedEvent.cs | Renames/moves event DTO to ResolvedEvent and updates to LogPathType. |
| src/EventLogExpert.Eventing/Common/Databases/IActiveDatabasePathsProvider.cs | Introduces shared interface for active DB path enumeration. |
| src/EventLogExpert.Eventing/Common/Databases/DatabasePathSorter.cs | Extracts and shares database load-priority sorting logic. |
| src/EventLogExpert.Eventing/Common/Channels/LogPathType.cs | Introduces new enum aligned with Win32 channel/file flags. |
| src/EventLogExpert.Eventing/Common/Channels/LogChannelNames.cs | Renames/moves channel name constants and admin-only set. |
| src/EventLogExpert.Eventing/Common/Channels/LogChannelMethods.cs | Renames/moves menu-path logic and hard-coded live channel set. |
| src/EventLogExpert.EventDbTool/UpgradeDatabaseCommand.cs | Updates DB context and logger method names; updates schema message helper. |
| src/EventLogExpert.EventDbTool/ShowCommand.cs | Updates warning logger call to Warning. |
| src/EventLogExpert.EventDbTool/ProviderSource.cs | Updates DB context, adds typed schema validation helper, and updates warning logger calls. |
| src/EventLogExpert.EventDbTool/MtaProviderSource.cs | Updates to LogPathType.File and warning/info logger calls; reorders helper method implementation. |
| src/EventLogExpert.EventDbTool/MergeDatabaseCommand.cs | Updates DB context and logger method names; minor const casing normalization. |
| src/EventLogExpert.EventDbTool/DiffDatabaseCommand.cs | Updates DB context and logger method names. |
| src/EventLogExpert.EventDbTool/DbToolCommand.cs | Updates output logging calls to Information. |
| src/EventLogExpert.EventDbTool/CreateDatabaseCommand.cs | Updates DB context and logger method names; normalizes batch-size constant casing. |
| src/EventLogExpert.Components/Menu/MenuBar.razor.cs | Updates menu live channel naming and tree-path parsing to new common channel utilities. |
| src/EventLogExpert.Components/Database/DatabaseRecoveryDialog.razor.cs | Updates warning logger call to Warning. |
Comments suppressed due to low confidence (2)
src/EventLogExpert.Eventing/Common/Events/ResolvedEvent.cs:49
- The
<see cref="IEventXmlResolver" />cref is unqualified and likely won’t resolve from theEventLogExpert.Eventing.Common.Eventsnamespace. Consider fully-qualifying it (or adding an appropriate using) so XML docs correctly link toEventLogExpert.Eventing.Resolvers.IEventXmlResolver.
tests/Unit/EventLogExpert.Eventing.Tests/Resolvers/EventXmlResolverTests.cs:202 - In the test resolver lambdas, the parameter name
LogPathTypeis PascalCase and identical to the enum type name, which is easy to misread/shadow. Rename the parameter to a camelCase name (e.g.,logPathType) and propagate to theResolveKeyconstruction for clarity.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
b1cd82e to
2983187
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 129 out of 129 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (2)
src/EventLogExpert.Eventing/Resolvers/EventResolver.cs:49
ObjectDisposedException.ThrowIf(IsDisposed, nameof(EventResolver))passes a string instance, which can lead to anObjectDisposedExceptionwhose object name/type is misleading (oftenSystem.String). Usethis(matchingEventResolverBase) or an overload that takes an object/type so the exception correctly identifies the disposed resolver instance.
src/EventLogExpert.Eventing/Common/Events/ResolvedEvent.cs:49- The
<see cref>here likely won’t resolve as written becauseResolvers.IEventXmlResolverisn’t in scope fromEventLogExpert.Eventing.Common.Events. Use a fully-qualified cref (e.g.,EventLogExpert.Eventing.Resolvers.IEventXmlResolver) or add the appropriateusingso documentation links resolve correctly.
2983187 to
7d7ad4d
Compare
7d7ad4d to
a88a21e
Compare
a88a21e to
e38e9e3
Compare
e38e9e3 to
7d2b998
Compare
7d2b998 to
01b7a44
Compare
01b7a44 to
c8ce6d0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #517 — base is
jschick/eventing-test-isolation-slnf. Originally the tip commit of #517; split out so #517 stays focused on its title (test-isolation directory layout + factory consolidation) and this PR carries the orthogonal Eventing domain restructure.Summary
Restructure the
EventLogExpert.Eventingnamespace into aCommon/<Domain>/topology, rename three subordinate folders so each one names what it contains rather than how it was historically organized, renameLogPathTypeenum values to match the Win32 flags they pass to native interop, apply a small handful of method/class renames that shed prefixes the surrounding folder already implies, and run a branch-wide member-reorder +OptimizeUsingsformatting pass over the touched files.Why now
After PR #516 landed the Eventing reorg's first wave (folder consolidation, IVT migration, API tightening) and PR #517 isolated the test tree, the namespace shape itself was still showing its history: a flat
EventLogExpert.Eventing.{Models|Channels|...}layout with leaky names likeLogName/FilePathenum values that pretended to be filesystem-y when they were actually wire-level Win32 channel-vs-file flags,EventResolver.ResolveProviderDetailswhose impl was a load (not a resolve),LiveLogWatcherServicewhose name promised a non-live counterpart that doesn't exist, etc. This PR fixes the topology and the names in one pass before the next layer (EventRecord internalization + the resolver pipeline migration into Eventing) builds on it.Changes (1 commit)
Folder topology — new
Common/<Domain>/groupProduction layout (
src/EventLogExpert.Eventing/Common/):Events/—DisplayEventModel.cs,SeverityLevel.csChannels/—LogChannelNames.cs,LogPathType.cs,LogChannelMethods.cs(cross-asm move from UI)Databases/—DatabasePathSorter.cs,IActiveDatabasePathsProvider.csTest layout (
tests/Unit/EventLogExpert.Eventing.Tests/Common/):Channels/—LogChannelNamesTests.cs,LogChannelMethodsTests.cs(cross-project from UI.Tests)Databases/—DatabasePathSorterTests.csSubordinate folder renames
EventResolvers/→Resolvers/(theEventprefix duplicated the assembly name).EventProviderDatabase/→ProviderDatabase/(same).Models/Severity.cs→Resolvers/SeverityFormatter.cs(the type was a static formatter, not a model).Symbol renames
LogPathType.LogName→LogPathType.ChannelandLogPathType.FilePath→LogPathType.File— matches the Win32EvtOpenChannelPath = 1/EvtOpenFilePath = 2flags the enum is marshalled to. Numeric values preserved for binary-compat with native interop.EventResolver.ResolveProviderDetails→LoadProviderDetails— the impl loads/caches details, doesn't resolve them.EventXmlResolver.ClearLog→ClearXmlCacheForLog— name now describes what it clears.EventLogInformation.GetLogInfo(private) →GetLogProperty— the private wrapsEvtGetLogInfoto read a single property.EventMessageProvider.GetMessages(static) →LoadMessagesFromFiles— parallel toLoadMessagesFromDlls.EventMessageProvider.LoadMessagesFromDlls(private) →TryLoadMessages(IEnumerable<string>, out List<MessageModel>)returningbool— matches BCLTry*pattern; surfaces the swallowed-exception contract at every call site and enables the modern-fallback semantics fix below.LiveLogWatcherService→LogWatcherService— only watches live channels, no non-live alternative exists; interface staysILogWatcherService.InfoLogHandler→InformationLogHandler,WarnLogHandler→WarningLogHandler— matchMicrosoft.Extensions.Logging.LogLevel.Information/LogLevel.Warning.Behavior change (intentional)
EventMessageProvider.GetMessageProviderDetailsnow falls through to the modernMessageFilePathwhen the legacy DLL load fails OR returns zero messages. Previously the legacy branch was anif (legacyProviderFiles.Any()) { ... } else { ... }, so a successful enumeration of legacy files but failed load would never try the modern path even though a deleted comment in the oldLoadMessagesFromDllssaid "We want to allow the results from the modern provider to return even if we failed to load the legacy provider." The new control flow matches that documented intent.Hygiene
ResharperGlobalTools "Joe: Apply file layout"profile (CSReorderTypeMembers + CSOptimizeUsings) applied to every touched file — restores branch-wide member ordering + sorts/prunes usings as a side effect.LogWatcherService.cs:67stale string"...present in LiveLogWatcher."swapped fornameof(LogWatcherService)(mandated by csharp.instructions.md after this branch).ResolveProviderDetails_*test method names renamed toLoadProviderDetails_*acrossEventProviderDatabaseEventResolverTests,LocalProviderEventResolverTests,VersatileEventResolverTests. 1ClearLog_*renamed toClearXmlCacheForLog_*inEventXmlResolverTests.Verification
dotnet build EventLogExpert.slnx— 0 warnings, 0 errorsdotnet format EventLogExpert.slnx --verify-no-changes(whitespace + style IDE0005 IDE0065) — cleanAssert.SkipUnlessover dev-machine availability)git mv— history preserved across renames.Coming up in this PR
A follow-up commit will rename
DisplayEventModel→ResolvedEvent(and moveCommon/Events/DisplayEventModel.cs→Common/Events/ResolvedEvent.cs). Captures a separate naming-convention decision fromcsharp.instructions.md: theModelsuffix is reserved for schema/template types (EventModel,MessageModelinEventing/Providers/— both stay), not runtime/domain types.The downstream EventRecord-internalization PR will branch off this one, push the resolver pipeline into Eventing (Approach B), and make
EventRecordinternal.