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);