Ejemplo n.º 1
0
        /// <summary>
        /// Adds a sink that writes log events as documents to Amazon Kinesis.
        /// </summary>
        /// <param name="loggerConfiguration">The logger configuration.</param>
        /// <param name="kinesisClient"></param>
        /// <param name="streamName"></param>
        /// <param name="shardCount"></param>
        /// <param name="bufferBaseFilename"></param>
        /// <param name="bufferFileSizeLimitBytes"></param>
        /// <param name="batchPostingLimit"></param>
        /// <param name="bufferLogShippingInterval"></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 AmazonKinesis(
            this LoggerSinkConfiguration loggerConfiguration,
            IAmazonKinesis kinesisClient,
            string streamName,
            int?shardCount                     = null,
            string bufferBaseFilename          = null,
            int?bufferFileSizeLimitBytes       = null,
            int?batchPostingLimit              = null,
            TimeSpan?bufferLogShippingInterval = null,
            TimeSpan?period                    = null,
            LogEventLevel?minimumLogEventLevel = null,
            EventHandler <LogSendErrorEventArgs> onLogSendError = null)
        {
            if (kinesisClient == null)
            {
                throw new ArgumentNullException("kinesisClient");
            }
            if (streamName == null)
            {
                throw new ArgumentNullException("streamName");
            }

            var options = new KinesisSinkOptions(kinesisClient: kinesisClient, streamName: streamName, shardCount: shardCount)
            {
                BufferFileSizeLimitBytes  = bufferFileSizeLimitBytes,
                BufferBaseFilename        = bufferBaseFilename,
                BufferLogShippingInterval = KinesisSinkOptions.DefaultBufferLogShippingInterval,
                Period               = period ?? KinesisSinkOptions.DefaultPeriod,
                BatchPostingLimit    = batchPostingLimit ?? KinesisSinkOptions.DefaultBatchPostingLimit,
                MinimumLogEventLevel = minimumLogEventLevel ?? LevelAlias.Minimum,
                OnLogSendError       = onLogSendError
            };

            return(AmazonKinesis(loggerConfiguration, options));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds a sink that writes log events as documents to Amazon Kinesis.
        /// </summary>
        /// <param name="loggerConfiguration">The logger configuration.</param>
        /// <param name="options"></param>
        /// <returns>Logger configuration, allowing configuration to continue.</returns>
        /// <exception cref="ArgumentNullException">A required parameter is null.</exception>
        public static LoggerConfiguration AmazonKinesis(
            this LoggerSinkConfiguration loggerConfiguration,
            KinesisSinkOptions options)
        {
            if (loggerConfiguration == null)
            {
                throw new ArgumentNullException("loggerConfiguration");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            ILogEventSink sink;

            if (options.BufferBaseFilename == null)
            {
                sink = new KinesisSink(options);
            }
            else
            {
                sink = new DurableKinesisSink(options);
            }

            return(loggerConfiguration.Sink(sink, options.MinimumLogEventLevel ?? LevelAlias.Minimum));
        }