feat: add -D/-V/-DV debug/trace CLI flags and file logging support
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
|
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
|
||||||
<PackageVersion Include="Serilog.Extensions.Hosting" Version="10.0.0" />
|
<PackageVersion Include="Serilog.Extensions.Hosting" Version="10.0.0" />
|
||||||
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
|
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
|
||||||
|
<PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||||
|
|
||||||
<!-- Authentication -->
|
<!-- Authentication -->
|
||||||
<PackageVersion Include="NATS.NKeys" Version="1.0.0-preview.3" />
|
<PackageVersion Include="NATS.NKeys" Version="1.0.0-preview.3" />
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Serilog.Extensions.Hosting" />
|
<PackageReference Include="Serilog.Extensions.Hosting" />
|
||||||
<PackageReference Include="Serilog.Sinks.Console" />
|
<PackageReference Include="Serilog.Sinks.Console" />
|
||||||
|
<PackageReference Include="Serilog.Sinks.File" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
using NATS.Server;
|
using NATS.Server;
|
||||||
using Serilog;
|
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();
|
var options = new NatsOptions();
|
||||||
|
|
||||||
// Simple CLI argument parsing
|
// Simple CLI argument parsing
|
||||||
@@ -55,9 +49,47 @@ for (int i = 0; i < args.Length; i++)
|
|||||||
case "--tlsverify":
|
case "--tlsverify":
|
||||||
options.TlsVerify = true;
|
options.TlsVerify = true;
|
||||||
break;
|
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 loggerFactory = new Serilog.Extensions.Logging.SerilogLoggerFactory(Log.Logger);
|
||||||
using var server = new NatsServer(options, loggerFactory);
|
using var server = new NatsServer(options, loggerFactory);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user