/// <summary> /// Adds a sink that lets you push log messages to RabbitMq /// </summary> public static LoggerConfiguration RabbitMQ( this LoggerSinkConfiguration loggerConfiguration, RabbitMQConfiguration rabbitMqConfiguration, ITextFormatter formatter, IFormatProvider formatProvider = null) { if (loggerConfiguration == null) throw new ArgumentNullException("loggerConfiguration"); if (rabbitMqConfiguration == null) throw new ArgumentNullException("rabbitMqConfiguration"); // calls overloaded extension method return loggerConfiguration.RabbitMQ( rabbitMqConfiguration.Hostname, rabbitMqConfiguration.Username, rabbitMqConfiguration.Password, rabbitMqConfiguration.Exchange, rabbitMqConfiguration.ExchangeType, rabbitMqConfiguration.Queue, rabbitMqConfiguration.DeliveryMode, rabbitMqConfiguration.RouteKey, rabbitMqConfiguration.Port, rabbitMqConfiguration.VHost, rabbitMqConfiguration.Heartbeat, rabbitMqConfiguration.Protocol, formatter, formatProvider); }
/// <summary> /// Constructor for RabbitMqClient /// </summary> /// <param name="configuration">mandatory</param> public RabbitMQClient(RabbitMQConfiguration configuration) { // load configuration _config = configuration; _publicationAddress = new PublicationAddress(_config.ExchangeType, _config.Exchange, _config.RouteKey); // initialize InitializeEndpoint(); }
public RabbitMQSink(RabbitMQConfiguration configuration, ITextFormatter formatter, IFormatProvider formatProvider) : base(configuration.BatchPostingLimit, configuration.Period) { _formatter = formatter ?? new RawFormatter(); _formatProvider = formatProvider; _client = new RabbitMQClient(configuration); }
public RabbitMQSink( RabbitMQConfiguration configuration, ITextFormatter formatter, IFormatProvider formatProvider ) { // prepare client _client = new RabbitMQClient(configuration); _formatProvider = formatProvider; _formatter = formatter ?? new RawFormatter(); }
/// <summary> /// Constructor for RabbitMqClient /// </summary> /// <param name="configuration">mandatory</param> public RabbitMQClient(RabbitMQConfiguration configuration) { // load configuration _config = configuration; _publicationAddress = new PublicationAddress(_config.ExchangeType, _config.Exchange, _config.RouteKey); // Lazy _modelWithPropertiesFactory = () => { var model = GetConnectionFactory() .CreateConnection() .CreateModel(); var basicProperties = model.CreateBasicProperties(); basicProperties.DeliveryMode = (byte)_config.DeliveryMode; //persistance return new ModelWithProperties(model, basicProperties); }; }
/// <summary> /// Configures Serilog logger configuration with RabbitMQ /// </summary> public static LoggerConfiguration RabbitMQ( this LoggerSinkConfiguration loggerConfiguration, string hostname, string username, string password, string exchange, string exchangeType, string queue, RabbitMQDeliveryMode deliveryMode, string routeKey, int port, string vHost, ushort heartbeat, IProtocol protocol, ITextFormatter formatter, IFormatProvider formatProvider = null) { // guards if (loggerConfiguration == null) throw new ArgumentNullException("loggerConfiguration"); if (string.IsNullOrEmpty(hostname)) throw new ArgumentException("hostname cannot be 'null'. Enter a valid hostname."); if (string.IsNullOrEmpty(username)) throw new ArgumentException("username cannot be 'null' or and empty string."); if (password == null) throw new ArgumentException("password cannot be 'null'. Specify an empty string if password is empty."); if (string.IsNullOrEmpty(queue)) throw new ArgumentException("queue cannot be 'null'. Specify a valid queue."); if (port <= 0 || port > 65535) throw new ArgumentOutOfRangeException("port", "port must be in a valid range (1 and 65535)"); // setup configuration var config = new RabbitMQConfiguration { Hostname = hostname, Username = username, Password = password, Exchange = exchange ?? string.Empty, ExchangeType = exchangeType ?? string.Empty, Queue = queue, DeliveryMode = deliveryMode, RouteKey = routeKey ?? string.Empty, Port = port, VHost = vHost ?? string.Empty, Protocol = protocol ?? Protocols.DefaultProtocol, Heartbeat = heartbeat }; return loggerConfiguration .Sink(new RabbitMQSink(config, formatter, formatProvider)); }