3 Commits

Author SHA1 Message Date
Anatolii Grynchuk 92be035f51 feat: replace manual Stopwatch with IProfiler in TransactionBehavior
- Add HrynCo.Common to Services project
- TransactionBehavior now uses IProfiler.MeasureExecutionAsync:
  MeasureExecutionAsync -> ExecuteInTransactionAsync -> next() -> SaveChangesAsync
- Profiler logs Start/End with duration + memory delta via Serilog PerformanceLog context
- Register IProfiler as singleton in ServiceCollectionExtensions (uses Log.Logger)

Ref: IT-628

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-02 01:15:10 +03:00
Anatolii Grynchuk a9bea183c1 feat: add SerilogRegistrar and ContextualSerilogLogger
- IContextualSerilogLogger<T> / ContextualSerilogLogger<T> in Services/Logging
  (handlers get a ForContext<T>-scoped logger via DI, consistent with ItemTracker)
- SerilogRegistrar extension on WebApplicationBuilder (Api)
- SerilogRegistrar extension on HostApplicationBuilder (Worker)
- Both registrars: set Log.Logger, wire Logging + Host/Services, register ILogger singleton
- ServiceCollectionExtensions: register IContextualSerilogLogger<> as transient
- Program.cs in both apps simplified to single builder.AddSerilog() call

Ref: IT-628

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-02 00:38:32 +03:00
Anatolii Grynchuk 5cf5f888eb feat: wire up Program.cs, DI extensions, Serilog, and appsettings
- ServiceCollectionExtensions in DAL.EF: AddNotificationDataAccess (DbContext, UoW, repositories)
- ServiceCollectionExtensions in Services: AddNotificationServices (MediatR + TransactionBehavior)
- Api/Program.cs: Serilog, OpenAPI, controllers, DI wiring
- Worker/Program.cs: Serilog, DI wiring
- appsettings.json: Serilog config with Console + Seq sinks, connection string
- appsettings.Development.json: Debug log level overrides

Ref: IT-628

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-02 00:24:54 +03:00