Support -m/--http_port, --http_base_path, and --https_port flags for configuring the monitoring HTTP endpoint from the command line.
60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
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
|
|
for (int i = 0; i < args.Length; i++)
|
|
{
|
|
switch (args[i])
|
|
{
|
|
case "-p" or "--port" when i + 1 < args.Length:
|
|
options.Port = int.Parse(args[++i]);
|
|
break;
|
|
case "-a" or "--addr" when i + 1 < args.Length:
|
|
options.Host = args[++i];
|
|
break;
|
|
case "-n" or "--name" when i + 1 < args.Length:
|
|
options.ServerName = args[++i];
|
|
break;
|
|
case "-m" or "--http_port" when i + 1 < args.Length:
|
|
options.MonitorPort = int.Parse(args[++i]);
|
|
break;
|
|
case "--http_base_path" when i + 1 < args.Length:
|
|
options.MonitorBasePath = args[++i];
|
|
break;
|
|
case "--https_port" when i + 1 < args.Length:
|
|
options.MonitorHttpsPort = int.Parse(args[++i]);
|
|
break;
|
|
}
|
|
}
|
|
|
|
using var loggerFactory = new Serilog.Extensions.Logging.SerilogLoggerFactory(Log.Logger);
|
|
var server = new NatsServer(options, loggerFactory);
|
|
|
|
var cts = new CancellationTokenSource();
|
|
Console.CancelKeyPress += (_, e) =>
|
|
{
|
|
e.Cancel = true;
|
|
cts.Cancel();
|
|
};
|
|
|
|
try
|
|
{
|
|
await server.StartAsync(cts.Token);
|
|
}
|
|
catch (OperationCanceledException)
|
|
{
|
|
Log.Information("Server shutdown requested");
|
|
}
|
|
finally
|
|
{
|
|
Log.CloseAndFlush();
|
|
}
|