Beispiel #1
0
        /// <summary>
        /// Construct a sink posting to the specified database.
        /// </summary>
        /// <param name="kinesisFirehoseClient">The Amazon Kinesis Firehose client.</param>
        /// <param name="options">Options for configuring how the sink behaves, may NOT be null.</param>
        public KinesisFirehoseSink(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient) :
            base(options.BatchPostingLimit, options.Period)
        {
            _state = new KinesisSinkState(options, kinesisFirehoseClient);

            _minimumAcceptedLevel = _state.Options.MinimumLogEventLevel;
        }
        /// <summary>
        /// Construct a sink posting to the specified database.
        /// </summary>
        /// <param name="kinesisFirehoseClient">The Amazon Kinesis Firehose client.</param>
        /// <param name="options">Options for configuring how the sink behaves, may NOT be null.</param>
        public KinesisFirehoseSink(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient) :
            base(options.BatchPostingLimit, options.Period)
        {
            _state = new KinesisSinkState(options, kinesisFirehoseClient);

            _minimumAcceptedLevel = _state.Options.MinimumLogEventLevel;
        }
 internal KinesisSinkState(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient) : base(options)
 {
     if (options == null) throw new ArgumentNullException("options");
     if (kinesisFirehoseClient == null) throw new ArgumentNullException("kinesisFirehoseClient");
     KinesisFirehoseClient = kinesisFirehoseClient;
     Options = options;
 }
Beispiel #4
0
 public KinesisSinkState(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient) : base(options)
 {
     if (kinesisFirehoseClient == null)
     {
         throw new ArgumentNullException("kinesisFirehoseClient");
     }
     KinesisFirehoseClient = kinesisFirehoseClient;
 }
        /// <summary>
        /// Adds a sink that writes log events as documents to Amazon Kinesis Firehose.
        /// </summary>
        /// <param name="loggerConfiguration">The logger configuration.</param>
        /// <param name="options"></param>
        /// <param name="kinesisFirehoseClient"></param>
        /// <returns>Logger configuration, allowing configuration to continue.</returns>
        /// <exception cref="ArgumentNullException">A required parameter is null.</exception>
        public static LoggerConfiguration AmazonKinesisFirehose(
            this LoggerSinkConfiguration loggerConfiguration,
            KinesisFirehoseSinkOptions options,
            IAmazonKinesisFirehose kinesisFirehoseClient)
        {
            if (loggerConfiguration == null) throw new ArgumentNullException("loggerConfiguration");
            if (options == null) throw new ArgumentNullException("options");

            ILogEventSink sink;
            if (options.BufferBaseFilename == null)
            {
                sink = new KinesisFirehoseSink(options, kinesisFirehoseClient);
            }
            else
            {
                sink = new DurableKinesisFirehoseSink(options, kinesisFirehoseClient);
            }

            return loggerConfiguration.Sink(sink, options.MinimumLogEventLevel ?? LevelAlias.Minimum);
        }
        public DurableKinesisFirehoseSink(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient)
        {
            var state = new KinesisSinkState(options, kinesisFirehoseClient);

            if (string.IsNullOrWhiteSpace(options.BufferBaseFilename))
            {
                throw new ArgumentException("Cannot create the durable Amazon Kinesis Firehose sink without a buffer base file name.");
            }

            _sink = new RollingFileSink(
               options.BufferBaseFilename + "-{Date}.json",
               state.DurableFormatter,
               options.BufferFileSizeLimitBytes,
               null);

            _shipper = new HttpLogShipper(state);

            if (options.OnLogSendError != null) {
                _shipper.LogSendError += options.OnLogSendError;
            }
        }
Beispiel #7
0
        public DurableKinesisFirehoseSink(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient)
        {
            var state = new KinesisSinkState(options, kinesisFirehoseClient);

            if (string.IsNullOrWhiteSpace(options.BufferBaseFilename))
            {
                throw new ArgumentException("Cannot create the durable Amazon Kinesis Firehose sink without a buffer base file name.");
            }

            _sink = new RollingFileSink(
                options.BufferBaseFilename + "-{Date}.json",
                state.DurableFormatter,
                options.BufferFileSizeLimitBytes,
                null);

            _shipper = new HttpLogShipper(state);

            _logSendErrorHandler = options.OnLogSendError;
            if (_logSendErrorHandler != null)
            {
                _shipper.LogSendError += _logSendErrorHandler;
            }
        }
        /// <summary>
        /// Adds a sink that writes log events as documents to Amazon Kinesis.
        /// </summary>
        /// <param name="loggerConfiguration">The logger configuration.</param>
        /// <param name="kinesisFirehoseClient"></param>
        /// <param name="streamName"></param>
        /// <param name="bufferBaseFilename"></param>
        /// <param name="bufferFileSizeLimitBytes"></param>
        /// <param name="batchPostingLimit"></param>
        /// <param name="period"></param>
        /// <param name="minimumLogEventLevel"></param>
        /// <param name="onLogSendError"></param>
        /// <returns>Logger configuration, allowing configuration to continue.</returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static LoggerConfiguration AmazonKinesisFirehose(
            this LoggerSinkConfiguration loggerConfiguration,
            IAmazonKinesisFirehose kinesisFirehoseClient,
            string streamName,
            string bufferBaseFilename = null,
            int? bufferFileSizeLimitBytes = null,
            int? batchPostingLimit = null,
            TimeSpan? period = null,
            LogEventLevel? minimumLogEventLevel = null,
            EventHandler<LogSendErrorEventArgs> onLogSendError = null)
        {
            if (kinesisFirehoseClient == null) throw new ArgumentNullException("kinesisFirehoseClient");
            if (streamName == null) throw new ArgumentNullException("streamName");

            var options = new KinesisFirehoseSinkOptions(streamName)
            {
                BufferFileSizeLimitBytes = bufferFileSizeLimitBytes,
                BufferBaseFilename = bufferBaseFilename == null ? null : bufferBaseFilename + ".firehose",
                Period = period ?? KinesisSinkOptionsBase.DefaultPeriod,
                BatchPostingLimit = batchPostingLimit ?? KinesisSinkOptionsBase.DefaultBatchPostingLimit,
                MinimumLogEventLevel = minimumLogEventLevel ?? LevelAlias.Minimum,
                OnLogSendError = onLogSendError
            };

            return AmazonKinesisFirehose(loggerConfiguration, options, kinesisFirehoseClient);
        }
 public KinesisSinkState(KinesisFirehoseSinkOptions options, IAmazonKinesisFirehose kinesisFirehoseClient)
     : base(options)
 {
     if (kinesisFirehoseClient == null) throw new ArgumentNullException("kinesisFirehoseClient");
     KinesisFirehoseClient = kinesisFirehoseClient;
 }