diff --git a/Directory.Packages.props b/Directory.Packages.props index 60cb5b9..6854a7a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -8,6 +8,7 @@ + diff --git a/src/NATS.Server.Host/NATS.Server.Host.csproj b/src/NATS.Server.Host/NATS.Server.Host.csproj index 0d9510d..6ab1019 100644 --- a/src/NATS.Server.Host/NATS.Server.Host.csproj +++ b/src/NATS.Server.Host/NATS.Server.Host.csproj @@ -11,6 +11,7 @@ + diff --git a/src/NATS.Server.Host/Program.cs b/src/NATS.Server.Host/Program.cs index 4dde566..b148eba 100644 --- a/src/NATS.Server.Host/Program.cs +++ b/src/NATS.Server.Host/Program.cs @@ -1,12 +1,6 @@ using NATS.Server; using Serilog; -Log.Logger = new LoggerConfiguration() - .MinimumLevel.Debug() - .Enrich.FromLogContext() - .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}") - .CreateLogger(); - var options = new NatsOptions(); // Simple CLI argument parsing @@ -55,9 +49,47 @@ for (int i = 0; i < args.Length; i++) case "--tlsverify": options.TlsVerify = true; break; + case "-D" or "--debug": + options.Debug = true; + break; + case "-V" or "--trace": + options.Trace = true; + break; + case "-DV": + options.Debug = true; + options.Trace = true; + break; + case "-l" or "--log" when i + 1 < args.Length: + options.LogFile = args[++i]; + break; + case "--log_size_limit" when i + 1 < args.Length: + options.LogSizeLimit = long.Parse(args[++i]); + break; } } +// Configure Serilog based on options +var logConfig = new LoggerConfiguration() + .Enrich.FromLogContext() + .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}"); + +if (options.Trace) + logConfig.MinimumLevel.Verbose(); +else if (options.Debug) + logConfig.MinimumLevel.Debug(); +else + logConfig.MinimumLevel.Information(); + +if (options.LogFile != null) +{ + logConfig.WriteTo.File( + options.LogFile, + fileSizeLimitBytes: options.LogSizeLimit > 0 ? options.LogSizeLimit : null, + rollOnFileSizeLimit: options.LogSizeLimit > 0); +} + +Log.Logger = logConfig.CreateLogger(); + using var loggerFactory = new Serilog.Extensions.Logging.SerilogLoggerFactory(Log.Logger); using var server = new NatsServer(options, loggerFactory);