In case of an error, CLI should return a non-zero exit code so that it can be used in other scripts/programs confidently. Additionally, the error output should be written to stderr, not stdout.
FINER: 2023-10-12 12:41:00.587642: info: System.Net.Http.HttpClient.ISymbolClient.ClientHandler[100]
FINER: 2023-10-12 12:41:00.587722: Sending HTTP request POST https://symbol-collector.service/symbol/batch/77816c1a-37f1-4286-af6c-ba4b7fb3e3be/start
FINER: 2023-10-12 12:41:01.658841:
FINER: 2023-10-12 12:41:01.658922: Started at:
FINER: 2023-10-12 12:41:01.662217: 10/12/2023 12:40:38 PM +02:00
FINER: 2023-10-12 12:41:01.662285: Ran for: 00:00:23.3245737
FINER: 2023-10-12 12:41:01.662307: File Processed: 0
FINER: 2023-10-12 12:41:01.662320: File or Directory Unauthorized 0
FINER: 2023-10-12 12:41:01.662330: Directory DoesNotExist: 0
FINER: 2023-10-12 12:41:01.662340: File DoesNotExist: 0
FINER: 2023-10-12 12:41:01.662350: Job in flight: 0
FINER: 2023-10-12 12:41:01.662359: Failed to upload: 0
FINER: 2023-10-12 12:41:01.662368: Successfully uploaded: 0
FINER: 2023-10-12 12:41:01.662376: Already existed: 0
FINER: 2023-10-12 12:41:01.662385: Uploaded bytes: 0 Bytes
FINER: 2023-10-12 12:41:01.662394: ELF files loaded: 0
FINER: 2023-10-12 12:41:01.662403: Mach-O files loaded: 0
FINER: 2023-10-12 12:41:01.662412: Fat Mach-O files loaded: 0
FINER: 2023-10-12 12:41:01.669709: System.Net.Http.HttpRequestException: Name or service not known (symbol-collector.service:443)
FINER: 2023-10-12 12:41:01.669839: ---> System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known
FINER: 2023-10-12 12:41:01.669865: at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669879: at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
FINER: 2023-10-12 12:41:01.669891: at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669901: at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669912: --- End of inner exception stack trace ---
FINER: 2023-10-12 12:41:01.669923: at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669934: at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669942: at System.Net.Http.HttpConnectionPool.AddHttp2ConnectionAsync(QueueItem queueItem)
FINER: 2023-10-12 12:41:01.669951: at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669960: at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter`1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken)
FINER: 2023-10-12 12:41:01.669970: at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669979: at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.669990: at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.<SendAsync>g__Core|5_0(HttpRequestMessage request, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.670001: at Microsoft.Extensions.Http.PolicyHttpMessageHandler.SendCoreAsync(HttpRequestMessage request, Context context, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.670012: at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, CancellationToken cancellationToken, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext)
FINER: 2023-10-12 12:41:01.670021: at Polly.AsyncPolicy`1.ExecuteAsync(Func`3 action, Context context, CancellationToken cancellationToken, Boolean continueOnCapturedContext)
FINER: 2023-10-12 12:41:01.670032: at Microsoft.Extensions.Http.PolicyHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.670136: at Sentry.SentryMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.670214: at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.<SendAsync>g__Core|5_0(HttpRequestMessage request, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.670245: at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
FINER: 2023-10-12 12:41:01.670259: at SymbolCollector.Core.SymbolClient.Start(String friendlyName, BatchType batchType, CancellationToken token)
FINER: 2023-10-12 12:41:01.670272: at SymbolCollector.Core.Client.UploadAllPathsAsync(String friendlyName, BatchType type, IEnumerable`1 topLevelPaths, CancellationToken cancellationToken)
FINER: 2023-10-12 12:41:01.670282: at SymbolCollector.Console.ConsoleUploader.StartUploadSymbols(IEnumerable`1 paths, String bundleId, Nullable`1 batchType, CancellationToken token)
FINER: 2023-10-12 12:41:01.670292: at SymbolCollector.Console.Program.Run(IHost host, Args args)
FINER: 2023-10-12 12:41:01.670302: at SymbolCollector.Console.Program.Main(String upload, String check, String path, String symsorter, String bundleId, String batchType, Boolean dryrun, Uri serverEndpoint)