internal PutRetentionPolicyResponse PutRetentionPolicy(PutRetentionPolicyRequest request)
        {
            var marshaller   = new PutRetentionPolicyRequestMarshaller();
            var unmarshaller = PutRetentionPolicyResponseUnmarshaller.Instance;

            return(Invoke <PutRetentionPolicyRequest, PutRetentionPolicyResponse>(request, marshaller, unmarshaller));
        }
Beispiel #2
0
        /// <summary>
        /// Creates the log group.
        /// </summary>
        /// <exception cref="Serilog.Sinks.AwsCloudWatch.AwsCloudWatchSinkException"></exception>
        private async Task CreateLogGroupAsync()
        {
            if (options.CreateLogGroup)
            {
                // see if the log group already exists
                var describeRequest = new DescribeLogGroupsRequest
                {
                    LogGroupNamePrefix = options.LogGroupName
                };

                var logGroups = await cloudWatchClient
                                .DescribeLogGroupsAsync(describeRequest);

                var logGroup = logGroups
                               .LogGroups
                               .FirstOrDefault(lg => string.Equals(lg.LogGroupName, options.LogGroupName, StringComparison.Ordinal));

                // create log group if it doesn't exist
                if (logGroup == null)
                {
                    var createRequest  = new CreateLogGroupRequest(options.LogGroupName);
                    var createResponse = await cloudWatchClient.CreateLogGroupAsync(createRequest);

                    // update the retention policy if a specific period is defined
                    if (options.LogGroupRetentionPolicy != LogGroupRetentionPolicy.Indefinitely)
                    {
                        var putRetentionRequest = new PutRetentionPolicyRequest(options.LogGroupName, (int)options.LogGroupRetentionPolicy);
                        await cloudWatchClient.PutRetentionPolicyAsync(putRetentionRequest);
                    }
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Initiates the asynchronous execution of the PutRetentionPolicy operation.
        /// <seealso cref="Amazon.CloudWatchLogs.IAmazonCloudWatchLogs"/>
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the PutRetentionPolicy operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task <PutRetentionPolicyResponse> PutRetentionPolicyAsync(PutRetentionPolicyRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new PutRetentionPolicyRequestMarshaller();
            var unmarshaller = PutRetentionPolicyResponseUnmarshaller.Instance;

            return(Invoke <IRequest, PutRetentionPolicyRequest, PutRetentionPolicyResponse>(request, marshaller, unmarshaller, signer, cancellationToken));
        }
Beispiel #4
0
        internal PutRetentionPolicyResponse PutRetentionPolicy(PutRetentionPolicyRequest request)
        {
            var task = PutRetentionPolicyAsync(request);

            try
            {
                return(task.Result);
            }
            catch (AggregateException e)
            {
                ExceptionDispatchInfo.Capture(e.InnerException).Throw();
                return(null);
            }
        }
Beispiel #5
0
        private static void CreateLogGroup(IAmazonCloudWatchLogs client, string logGroupName, int retentionDays)
        {
            var createLogGroupRequest = new CreateLogGroupRequest
            {
                LogGroupName = logGroupName
            };

            (client.CreateLogGroupAsync(createLogGroupRequest)).GetAwaiter()
            .GetResult();

            Thread.Sleep(1000);

            var putRetentionPolicyRequest = new PutRetentionPolicyRequest
            {
                LogGroupName    = logGroupName,
                RetentionInDays = retentionDays
            };

            (client.PutRetentionPolicyAsync(putRetentionPolicyRequest))
            .GetAwaiter().GetResult();
        }