private ITransport MakeTransport(GraylogSinkOptions options) { switch (options.TransportType) { case SerilogTransportType.Udp: IDnsInfoProvider dns = new DnsWrapper(); IPAddress[] ipAddreses = Task.Run(() => dns.GetHostAddresses(options.HostnameOrAddress)).Result; IPAddress ipAddress = ipAddreses.FirstOrDefault(c => c.AddressFamily == AddressFamily.InterNetwork); var ipEndpoint = new IPEndPoint(ipAddress, options.Port); IDataToChunkConverter chunkConverter = new DataToChunkConverter(new ChunkSettings { MessageIdGeneratorType = options.MessageGeneratorType }, new MessageIdGeneratorResolver()); var udpClient = new UdpTransportClient(ipEndpoint); var udpTransport = new UdpTransport(udpClient, chunkConverter); return(udpTransport); case SerilogTransportType.Http: var httpClient = new HttpTransportClient($"{options.HostnameOrAddress}:{options.Port}/gelf"); var httpTransport = new HttpTransport(httpClient); return(httpTransport); default: throw new ArgumentOutOfRangeException(nameof(options), options.TransportType, null); } }
public ITransport MakeTransport() { switch (_options.TransportType) { case SinkTransportType.Udp: IDnsInfoProvider dns = new DnsWrapper(); IPAddress[] ipAddreses = Task.Run(() => dns.GetHostAddresses(_options.HostnameOrAddress)).Result; IPAddress ipAddress = ipAddreses.FirstOrDefault(c => c.AddressFamily == AddressFamily.InterNetwork); var ipEndpoint = new IPEndPoint(ipAddress ?? throw new InvalidOperationException(), _options.Port); var chunkSettings = new ChunkSettings(_options.MessageGeneratorType, _options.MaxMessageSizeInUdp); IDataToChunkConverter chunkConverter = new DataToChunkConverter(chunkSettings, new MessageIdGeneratorResolver()); var udpClient = new UdpTransportClient(ipEndpoint); var udpTransport = new UdpTransport(udpClient, chunkConverter); return(udpTransport); case SinkTransportType.Http: var httpClient = new HttpTransportClient($"{_options.HostnameOrAddress}:{_options.Port}/gelf"); var httpTransport = new HttpTransport(httpClient); return(httpTransport); default: throw new ArgumentOutOfRangeException(nameof(_options), _options.TransportType, null); } }
public async Task WhenSendJson_ThenResultShouldThrowException() { var target = new HttpTransportClient("http://logs.aeroclub.int:12201"); LoggingFailedException exception = await Assert.ThrowsAsync <LoggingFailedException>(() => target.Send("{\"facility\":\"VolkovTestFacility\",\"full_message\":\"SomeComplexTestEntry TestClass { Id: 1, TestPropertyOne: \\\"1\\\", Bar: Bar { Id: 2, Prop: \\\"123\\\" }, TestPropertyTwo: \\\"2\\\", TestPropertyThree: \\\"3\\\" }\",\"host\":\"N68-MSK\",\"level\":6,\"short_message\":\"SomeComplexTestEntry TestClass { Id: 1, TestProper\",\"timestamp\":\"2017-03-24T11:18:54.1850651\",\"version\":\"1.1\",\"_stringLevel\":\"Information\",\"_test.Id\":1,\"_test.TestPropertyOne\":\"1\",\"_test.Bar.Id\":2,\"_test.Bar.Prop\":\"123\",\"_test.TestPropertyTwo\":\"2\",\"_test.TestPropertyThree\":\"3\"}")); exception.Message.Should().Be("Unable send log message to graylog via HTTP transport"); }
internal override async Task <StoreResponse> InvokeStoreAsync(Uri baseAddress, ResourceOperation resourceOperation, DocumentServiceRequest request) { Uri physicalAddress = GatewayStoreClient.IsFeedRequest(request.OperationType) ? HttpTransportClient.GetResourceFeedUri(resourceOperation.resourceType, baseAddress, request) : HttpTransportClient.GetResourceEntryUri(resourceOperation.resourceType, baseAddress, request); using (HttpResponseMessage responseMessage = await this.InvokeClientAsync(request, resourceOperation.resourceType, physicalAddress, default(CancellationToken))) { return(await HttpTransportClient.ProcessHttpResponse(request.ResourceAddress, string.Empty, responseMessage, physicalAddress, request)); } }
public ITransport MakeTransport() { switch (_options.TransportType) { case SinkTransportType.Udp: { var ipAddress = Task.Run(() => GetIpAddress(_options.HostnameOrAddress)).GetAwaiter().GetResult(); var ipEndpoint = new IPEndPoint(ipAddress ?? throw new InvalidOperationException(), _options.Port.GetValueOrDefault(12201)); var chunkSettings = new ChunkSettings(_options.MessageGeneratorType, _options.MaxMessageSizeInUdp); IDataToChunkConverter chunkConverter = new DataToChunkConverter(chunkSettings, new MessageIdGeneratorResolver()); var udpClient = new UdpTransportClient(ipEndpoint); var udpTransport = new UdpTransport(udpClient, chunkConverter); return(udpTransport); } case SinkTransportType.Http: { var builder = new UriBuilder(_options.HostnameOrAddress) { Port = _options.Port.GetValueOrDefault(12201), Path = "gelf" }; var httpClient = new HttpTransportClient(builder.Uri.ToString()); var httpTransport = new HttpTransport(httpClient); return(httpTransport); } case SinkTransportType.Tcp: { var ipAddress = Task.Run(() => GetIpAddress(_options.HostnameOrAddress)).GetAwaiter().GetResult(); var tcpClient = new TcpTransportClient(ipAddress, _options.Port.GetValueOrDefault(12201), _options.UseSsl ? _options.HostnameOrAddress : null); var transport = new TcpTransport(tcpClient); return(transport); } default: throw new ArgumentOutOfRangeException(nameof(_options), _options.TransportType, null); } }
public ITransport MakeTransport() { switch (_options.TransportType) { case SinkTransportType.Udp: { var ipAddress = Task.Run(() => GetIpAddress(_options.HostnameOrAddress)).GetAwaiter().GetResult(); var ipEndpoint = new IPEndPoint(ipAddress ?? throw new InvalidOperationException(), _options.Port); var chunkSettings = new ChunkSettings(_options.MessageGeneratorType, _options.MaxMessageSizeInUdp); IDataToChunkConverter chunkConverter = new DataToChunkConverter(chunkSettings, new MessageIdGeneratorResolver()); var udpClient = new UdpTransportClient(ipEndpoint); var udpTransport = new UdpTransport(udpClient, chunkConverter); return(udpTransport); } case SinkTransportType.Http: { var httpClient = new HttpTransportClient($"{_options.HostnameOrAddress}:{_options.Port}/gelf"); var httpTransport = new HttpTransport(httpClient); return(httpTransport); } case SinkTransportType.Tcp: { var ipAddress = Task.Run(() => GetIpAddress(_options.HostnameOrAddress)).GetAwaiter().GetResult(); var tcpClient = new TcpTransportClient(ipAddress, _options.Port); Task.Run(() => tcpClient.Connect()).GetAwaiter().GetResult(); var transport = new TcpTransport(tcpClient); return(transport); } default: throw new ArgumentOutOfRangeException(nameof(_options), _options.TransportType, null); } }
public async Task WhenSendJson_ThenResultShouldNotThrows() { var target = new HttpTransportClient("http://logs.aeroclub.int:12201/gelf"); await target.Send("{\"facility\":\"VolkovTestFacility\",\"full_message\":\"SomeComplexTestEntry TestClass { Id: 1, TestPropertyOne: \\\"1\\\", Bar: Bar { Id: 2, Prop: \\\"123\\\" }, TestPropertyTwo: \\\"2\\\", TestPropertyThree: \\\"3\\\" }\",\"host\":\"N68-MSK\",\"level\":6,\"short_message\":\"SomeComplexTestEntry TestClass { Id: 1, TestProper\",\"timestamp\":\"2017-03-24T11:18:54.1850651\",\"version\":\"1.1\",\"_stringLevel\":\"Information\",\"_test.Id\":1,\"_test.TestPropertyOne\":\"1\",\"_test.Bar.Id\":2,\"_test.Bar.Prop\":\"123\",\"_test.TestPropertyTwo\":\"2\",\"_test.TestPropertyThree\":\"3\"}"); }