public static LoggerConfiguration AmqpSink(
            this LoggerSinkConfiguration loggerConfiguration,
            IConnection amqpConnection,
            AmqpConfiguration remoteConfiguration,
            ITextFormatter textFormatter           = null,
            IFormatProvider formatProvider         = null,
            LogEventLevel restrictedToMinimumLevel = LogEventLevel.Verbose)
        {
            var _sink = new AmqpSink(amqpConfig: remoteConfiguration, amqpConnection: amqpConnection, textFormatter: textFormatter, formatProvider: formatProvider);

            return(loggerConfiguration.Sink(logEventSink: _sink));
        }
 public AmqpSink(AmqpConfiguration amqpConfig, IConnection amqpConnection, ITextFormatter textFormatter, IFormatProvider formatProvider)
 {
     this._amqpConfig = amqpConfig;
     this._amqpClient = new AmqpClient();
     this._connection = amqpConnection;
     if (amqpConfig.IsRpc)
     {
         this._amqpClient.InitiateAmqpRpc(this._connection);
         this._rpcClient = this._amqpClient.CreateAmqpRpcClient(amqpNode: this._amqpConfig.QueueName);
     }
     else
     {
         this._amqpSession = amqpConnection.CreateSession();
         this._amqpSender  = this._amqpSession.CreateSender(name: "Amqp-Serilog.Sinks.Amqp", address: this._amqpConfig.QueueName);
     }
     this._textFormatter  = textFormatter;
     this._formatProvider = formatProvider;
 }