protected override async Task EmitBatchAsync(IEnumerable <LogEvent> events)
        {
            var lastEvent = events.LastOrDefault();

            if (lastEvent == null)
            {
                return;
            }

            var blob = await cloudBlobProvider.GetCloudBlobAsync(blobServiceClient, storageContainerName, blobNameFactory.GetBlobName(lastEvent.Timestamp), bypassBlobCreationValidation, blobSizeLimitBytes).ConfigureAwait(false);

            var blocks = appendBlobBlockPreparer.PrepareAppendBlocks(textFormatter, events);

            await appendBlobBlockWriter.WriteBlocksToAppendBlobAsync(blob, blocks).ConfigureAwait(false);

            if (retainedBlobCountLimit != null)
            {
                await cloudBlobProvider.DeleteArchivedBlobsAsync(blobServiceClient, storageContainerName, blobNameFactory.GetBlobNameFormat(), retainedBlobCountLimit ?? default(int));
            }
        }
        /// <summary>
        /// Emit the provided log event to the sink.
        /// </summary>
        /// <param name="logEvent">The log event to write.</param>
        public void Emit(LogEvent logEvent)
        {
            var blob = cloudBlobProvider.GetCloudBlobAsync(cloudBlobClient, storageContainerName, blobNameFactory.GetBlobName(logEvent.Timestamp), bypassContainerCreationValidation, blobSizeLimitBytes: blobSizeLimitBytes).SyncContextSafeWait(waitTimeoutMilliseconds);

            var blocks = appendBlobBlockPreparer.PrepareAppendBlocks(textFormatter, new[] { logEvent });

            appendBlobBlockWriter.WriteBlocksToAppendBlobAsync(blob, blocks).SyncContextSafeWait(waitTimeoutMilliseconds);

            if (retainedBlobCountLimit != null)
            {
                cloudBlobProvider.DeleteArchivedBlobsAsync(cloudBlobClient, storageContainerName, blobNameFactory.GetBlobNameFormat(), retainedBlobCountLimit ?? default(int));
            }
        }
Пример #3
0
        /// <summary>
        /// Emit the provided log event to the sink.
        /// </summary>
        /// <param name="logEvent">The log event to write.</param>
        public void Emit(LogEvent logEvent)
        {
            var blob = cloudBlobProvider.GetCloudBlobAsync(storageAccount, storageFolderName, blobNameFactory.GetBlobName(logEvent.Timestamp), bypassFolderCreationValidation).SyncContextSafeWait(waitTimeoutMilliseconds);

            var blocks = appendBlobBlockPreparer.PrepareAppendBlocks(textFormatter, new[] { logEvent });

            appendBlobBlockWriter.WriteBlocksToAppendBlobAsync(blob, blocks).SyncContextSafeWait(waitTimeoutMilliseconds);
        }
        protected override async Task EmitBatchAsync(IEnumerable <LogEvent> events)
        {
            var lastEvent = events.LastOrDefault();

            if (lastEvent == null)
            {
                return;
            }

            var blob = await cloudBlobProvider.GetCloudBlobAsync(storageAccount, storageContainerName, blobNameFactory.GetBlobName(lastEvent.Timestamp), bypassBlobCreationValidation).ConfigureAwait(false);

            var blocks = appendBlobBlockPreparer.PrepareAppendBlocks(textFormatter, events);

            await appendBlobBlockWriter.WriteBlocksToAppendBlobAsync(blob, blocks).ConfigureAwait(false);
        }
Пример #5
0
        protected override async Task EmitBatchAsync(IEnumerable <LogEvent> events)
        {
            var lastEvent = events.LastOrDefault();

            if (lastEvent == null)
            {
                return;
            }

            var blob = cloudBlobProvider.GetCloudBlob(storageAccount, storageFolderName, blobNameFactory.GetBlobName(lastEvent.Timestamp), bypassBlobCreationValidation);

            using (MemoryStream stream = new MemoryStream())
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    foreach (LogEvent logEvent in events)
                    {
                        writer.Write(logEvent.RenderMessage() + Environment.NewLine);
                    }

                    writer.Flush();
                    stream.Position = 0;

                    await blob.AppendBlockAsync(stream);
                }
            }
        }