diff --git a/PingPonger/Program.cs b/PingPonger/Program.cs index 8198be2..d20e0e3 100644 --- a/PingPonger/Program.cs +++ b/PingPonger/Program.cs @@ -39,10 +39,17 @@ public static int Main(string[] args) try { var options = new Options(); - if (Parser.Default.ParseArguments(args).Tag == ParserResultType.NotParsed) + var parseResult = Parser.Default.ParseArguments(args) + .WithNotParsed(errs => + { + Console.WriteLine("Failed parsing command line arguments:"); + errs.ToList().ForEach(e => Console.WriteLine(@"error: {0}", e)); + args.ToList().ForEach(a => Console.WriteLine(@"arg: {0}", a)); + }) + .WithParsed(opts => options = opts); + + if (parseResult.Tag == ParserResultType.NotParsed) { - Console.WriteLine(@"Failed parsing command line arguments"); - args.ToList().ForEach(a => Console.WriteLine(@"arg: {0}", a)); return 1; } @@ -64,11 +71,19 @@ public static int Main(string[] args) { if (options.UDP) { - logConfig.WriteTo.UDPSink(options.Url, options.Port, new LogstashJsonFormatter()); + logConfig.WriteTo.UDPSink(options.Url, options.Port); } if (options.TCP) { - logConfig.WriteTo.TCPSink(options.Url, options.Port, null, null, new LogstashJsonFormatter()); + if (options.Port != 0) + { + logConfig.WriteTo.TCPSink(options.Url, options.Port); + } + else + { + // URL option value may already have a port in it, e.g. "tcp://localhost:8888" + logConfig.WriteTo.TCPSink(options.Url); + } } } else if (options.IP?.Length > 0) @@ -81,11 +96,11 @@ public static int Main(string[] args) if (options.UDP) { - logConfig.WriteTo.UDPSink(ipAddress, options.Port, new LogstashJsonFormatter()); + logConfig.WriteTo.UDPSink(ipAddress, options.Port); } if (options.TCP) { - logConfig.WriteTo.TCPSink(ipAddress, options.Port,null,null, new LogstashJsonFormatter()); + logConfig.WriteTo.TCPSink(ipAddress, options.Port); } } else diff --git a/Serilog.Sinks.Network.Test/JsonFormatter.cs b/Serilog.Sinks.Network.Test/JsonFormatter.cs index 13bac55..271bc2f 100644 --- a/Serilog.Sinks.Network.Test/JsonFormatter.cs +++ b/Serilog.Sinks.Network.Test/JsonFormatter.cs @@ -17,7 +17,7 @@ public class JsonFormatter { private static LoggerAndSocket ConfigureTestLogger( ITextFormatter? formatter = null, - ILogEventEnricher[] enrichers = null + ILogEventEnricher[]? enrichers = null ) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -25,7 +25,7 @@ private static LoggerAndSocket ConfigureTestLogger( socket.Listen(); var loggerConfiguration = new LoggerConfiguration() - .WriteTo.TCPSink(IPAddress.Loopback, ((IPEndPoint)socket.LocalEndPoint!).Port, null, null, formatter); + .WriteTo.TCPSink(IPAddress.Loopback, ((IPEndPoint)socket.LocalEndPoint!).Port, formatter); if (enrichers != null) { loggerConfiguration.Enrich.With(enrichers); @@ -79,7 +79,7 @@ public async Task IncludesCurrentActivityTraceAndSpanIds() var receivedData = await ServerPoller.PollForReceivedData(fixture.Socket); - receivedData.Should().Contain($"\"traceId\":\"{activity.TraceId}\""); + receivedData.Should().Contain($"\"traceId\":\"{activity!.TraceId}\""); receivedData.Should().Contain($"\"spanId\":\"{activity.SpanId}\""); } @@ -119,7 +119,7 @@ public async Task WritesTraceAndSpanIdsBeforeDuplicatePropertiesFromEnrichers() var receivedData = await ServerPoller.PollForReceivedData(fixture.Socket); - var indexOfTraceId = receivedData.IndexOf($"\"traceId\":\"{activity.TraceId}\""); + var indexOfTraceId = receivedData.IndexOf($"\"traceId\":\"{activity!.TraceId}\""); var indexOfTraceIdFromEnricher = receivedData.IndexOf("\"traceId\":\"traceId-from-enricher\""); indexOfTraceId.Should().BePositive().And.BeLessThan(indexOfTraceIdFromEnricher); @@ -139,4 +139,4 @@ private static ActivityListener CreateAndAddActivityListener(string sourceName) return activityListener; } } -} \ No newline at end of file +} diff --git a/Serilog.Sinks.Network.Test/WhenLoggingViaTcp.cs b/Serilog.Sinks.Network.Test/WhenLoggingViaTcp.cs index e82c207..80c79c3 100644 --- a/Serilog.Sinks.Network.Test/WhenLoggingViaTcp.cs +++ b/Serilog.Sinks.Network.Test/WhenLoggingViaTcp.cs @@ -22,7 +22,7 @@ private static LoggerAndSocket ConfigureTestLogger(ITextFormatter? formatter = n socket.Listen(); var logger = new LoggerConfiguration() - .WriteTo.TCPSink(IPAddress.Loopback, ((IPEndPoint)socket.LocalEndPoint!).Port, null, null, formatter) + .WriteTo.TCPSink(IPAddress.Loopback, ((IPEndPoint)socket.LocalEndPoint!).Port, formatter) .CreateLogger(); return new LoggerAndSocket { Logger = logger, Socket = socket }; diff --git a/Serilog.Sinks.Network/NetworkLoggerConfigurationExtensions.cs b/Serilog.Sinks.Network/NetworkLoggerConfigurationExtensions.cs index b554f54..188ba33 100644 --- a/Serilog.Sinks.Network/NetworkLoggerConfigurationExtensions.cs +++ b/Serilog.Sinks.Network/NetworkLoggerConfigurationExtensions.cs @@ -41,42 +41,33 @@ public static LoggerConfiguration TCPSink( this LoggerSinkConfiguration loggerConfiguration, IPAddress ipAddress, int port, - int? writeTimeoutMs = null, - int? disposeTimeoutMs = null, ITextFormatter? textFormatter = null, - LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) - { - return TCPSink(loggerConfiguration, $"tcp://{ipAddress}:{port}", writeTimeoutMs, disposeTimeoutMs, textFormatter, restrictedToMinimumLevel); - } - - public static LoggerConfiguration TCPSink( - this LoggerSinkConfiguration loggerConfiguration, - IPAddress ipAddress, - int port, - LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) + LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, + int? writeTimeoutMs = null, + int? disposeTimeoutMs = null) { - return TCPSink(loggerConfiguration, ipAddress, port,null, null, null, restrictedToMinimumLevel); + return TCPSink(loggerConfiguration, $"tcp://{ipAddress}:{port}", textFormatter, restrictedToMinimumLevel, writeTimeoutMs, disposeTimeoutMs); } public static LoggerConfiguration TCPSink( this LoggerSinkConfiguration loggerConfiguration, string host, int port, - int? writeTimeoutMs = null, - int? disposeTimeoutMs = null, ITextFormatter? textFormatter = null, - LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) + LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, + int? writeTimeoutMs = null, + int? disposeTimeoutMs = null) { - return TCPSink(loggerConfiguration, $"{host}:{port}", writeTimeoutMs, disposeTimeoutMs, textFormatter, restrictedToMinimumLevel); + return TCPSink(loggerConfiguration, $"{host}:{port}", textFormatter, restrictedToMinimumLevel, writeTimeoutMs, disposeTimeoutMs); } public static LoggerConfiguration TCPSink( this LoggerSinkConfiguration loggerConfiguration, string uri, - int? writeTimeoutMs = null, - int? disposeTimeoutMs = null, ITextFormatter? textFormatter = null, - LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) + LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, + int? writeTimeoutMs = null, + int? disposeTimeoutMs = null) { var socketWriter = new TcpSocketWriter( BuildUri(uri), @@ -86,14 +77,6 @@ public static LoggerConfiguration TCPSink( return loggerConfiguration.Sink(sink, restrictedToMinimumLevel); } - public static LoggerConfiguration TCPSink( - this LoggerSinkConfiguration loggerConfiguration, - string uri, - LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) - { - return TCPSink(loggerConfiguration, uri, null, null, null, restrictedToMinimumLevel); - } - private static IPAddress ResolveAddress(string uri) { // Check if it is IP address