diff --git a/OF DL.Core/OF DL.Core.csproj b/OF DL.Core/OF DL.Core.csproj index 2ef833a..35c037e 100644 --- a/OF DL.Core/OF DL.Core.csproj +++ b/OF DL.Core/OF DL.Core.csproj @@ -19,6 +19,7 @@ + diff --git a/OF DL.Core/Services/SeqLoggingService.cs b/OF DL.Core/Services/SeqLoggingService.cs new file mode 100644 index 0000000..6efcea4 --- /dev/null +++ b/OF DL.Core/Services/SeqLoggingService.cs @@ -0,0 +1,50 @@ +using OF_DL.Enumerations; +using Serilog; +using Serilog.Core; +using Serilog.Events; + +namespace OF_DL.Services; + +public class SeqLoggingService : ILoggingService +{ + public SeqLoggingService() + { + LevelSwitch = new LoggingLevelSwitch(); + InitializeLoggerWithSeq(); + } + + /// + /// Gets the level switch that controls runtime logging verbosity. + /// + public LoggingLevelSwitch LevelSwitch { get; } + + /// + /// Updates the minimum logging level at runtime. + /// + /// The new minimum log level. + public void UpdateLoggingLevel(LoggingLevel newLevel) + { + LevelSwitch.MinimumLevel = (LogEventLevel)newLevel; + Log.Debug("Logging level updated to: {LoggingLevel}", newLevel); + } + + /// + /// Returns the current minimum logging level. + /// + public LoggingLevel GetCurrentLoggingLevel() => (LoggingLevel)LevelSwitch.MinimumLevel; + + private void InitializeLoggerWithSeq() + { + Log.Logger = new LoggerConfiguration() + .Enrich.FromLogContext() + .Enrich.WithProperty("Application", "OF_DL") + .Enrich.WithProperty("StartTime", $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} ") + .Enrich.WithProperty("MachineName", Environment.MachineName) + .MinimumLevel.ControlledBy(LevelSwitch) + .WriteTo.File("logs/OFDL.txt", rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: LogEventLevel.Error) + .WriteTo.Seq("https://seq.cajetan.dk") + .CreateLogger(); + + Log.Debug("Logging service initialized"); + } +} diff --git a/OF DL/Program.cs b/OF DL/Program.cs index 792eae2..0221cd2 100644 --- a/OF DL/Program.cs +++ b/OF DL/Program.cs @@ -84,7 +84,7 @@ public class Program(IServiceProvider serviceProvider) { // Set up dependency injection with LoggingService and ConfigService ServiceCollection services = new(); - services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); ServiceProvider tempServiceProvider = services.BuildServiceProvider();