Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 3
0
        public GraylogSink(GraylogSinkOptions options)
        {
            IDnsInfoProvider dns = new DnsWrapper();

            IPAddress[] ipAddreses = Task.Run(() => dns.GetHostAddresses(options.HostnameOrAdress)).Result;

            IPAddress ipAdress = ipAddreses.FirstOrDefault(c => c.AddressFamily == AddressFamily.InterNetwork);

            var ipEndpoint = new IPEndPoint(ipAdress, options.Port);

            IDataToChunkConverter chunkConverter = new DataToChunkConverter(new ChunkSettings
            {
                MessageIdGeneratorType = options.MessageGeneratorType
            }, new MessageIdGeneratorResolver());

            var client = new UdpTransportClient(ipEndpoint);

            _transport = options.Transport ?? new UdpTransport(client, chunkConverter);

            string hostName = Dns.GetHostName();

            IDictionary <BuilderType, IMessageBuilder> builders = new Dictionary <BuilderType, IMessageBuilder>
            {
                [BuilderType.Exception] = new ExceptionMessageBuilder(hostName, options),
                [BuilderType.Message]   = new GelfMessageBuilder(hostName, options)
            };

            _converter = options.GelfConverter ?? new GelfConverter(builders);
        }
Ejemplo n.º 4
0
        public void TrySendSomeData()
        {
            IPAddress  ipAddress       = IPAddress.Parse("127.0.0.1");
            IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 3128);

            var fixture = new Fixture();
            var bytes   = fixture.CreateMany <byte>(128);


            var client = new UdpTransportClient(ipLocalEndPoint);

            client.Send(bytes.ToArray());
        }
        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);
            }
        }
Ejemplo n.º 7
0
        public GraylogSink(GraylogSinkOptions options)
        {
            _transport = options.Transport;

            if (_transport == null)
            {
                if (options.UseHttpTransport)
                {
                    _converter = new HttpGelfConverter(options.Facility, options.ShortMessageMaxLength);
                    _transport = new HttpTransport(options.HostnameOrAdress);   // should be in the form http://HostNameOrIp:Port//Gelf
                }
                else
                {
                    IDnsInfoProvider dns        = new DnsWrapper();
                    IPAddress[]      ipAddreses = Task.Run(() => dns.GetHostAddresses(options.HostnameOrAdress)).Result;

                    IPAddress ipAdress = ipAddreses.FirstOrDefault(c => c.AddressFamily == AddressFamily.InterNetwork);

                    var ipEndpoint = new IPEndPoint(ipAdress, options.Port);

                    IDataToChunkConverter chunkConverter = new DataToChunkConverter(new ChunkSettings
                    {
                        MessageIdGeneratorType = options.MessageGeneratorType
                    }, new MessageIdGeneratorResolver());

                    var client = new UdpTransportClient(ipEndpoint);
                    _transport = new UdpTransport(client, chunkConverter);
                }
            }

            string hostName = Dns.GetHostName();

            IDictionary <BuilderType, IMessageBuilder> builders = new Dictionary <BuilderType, IMessageBuilder>
            {
                [BuilderType.Exception] = new ExceptionMessageBuilder(hostName, options),
                [BuilderType.Message]   = new GelfMessageBuilder(hostName, options)
            };

            _converter = options.GelfConverter ?? new GelfConverter(builders);
        }