/// <summary> /// Construct a sink that saves logs to the specified storage account. /// </summary> /// <param name="cloudBlobClient">The Cloud Storage Client to use to insert the log entries to.</param> /// <param name="textFormatter"></param> /// <param name="storageContainerName">Container where the log entries will be written to.</param> /// <param name="storageFileName">File name that log entries will be written to.</param> /// <param name="bypassContainerCreationValidation">Bypass the exception in case the container creation fails.</param> /// <param name="cloudBlobProvider">Cloud blob provider to get current log blob.</param> /// <param name="appendBlobBlockPreparer"></param> /// <param name="appendBlobBlockWriter"></param> /// <param name="blobSizeLimitBytes">The maximum file size to allow before a new one is rolled, expressed in bytes.</param> /// <param name="retainedBlobCountLimit">The number of latest blobs to be retained in the container always. Deletes older blobs when this limit is crossed.</param> public AzureBlobStorageSink( CloudBlobClient cloudBlobClient, ITextFormatter textFormatter, string storageContainerName = null, string storageFileName = null, bool bypassContainerCreationValidation = false, ICloudBlobProvider cloudBlobProvider = null, IAppendBlobBlockPreparer appendBlobBlockPreparer = null, IAppendBlobBlockWriter appendBlobBlockWriter = null, long?blobSizeLimitBytes = null, int?retainedBlobCountLimit = null) { this.textFormatter = textFormatter; if (string.IsNullOrEmpty(storageContainerName)) { storageContainerName = "logs"; } if (string.IsNullOrEmpty(storageFileName)) { storageFileName = "log.txt"; } this.cloudBlobClient = cloudBlobClient; this.storageContainerName = storageContainerName; blobNameFactory = new BlobNameFactory(storageFileName); this.bypassContainerCreationValidation = bypassContainerCreationValidation; this.cloudBlobProvider = cloudBlobProvider ?? new DefaultCloudBlobProvider(); this.appendBlobBlockPreparer = appendBlobBlockPreparer ?? new DefaultAppendBlobBlockPreparer(); this.appendBlobBlockWriter = appendBlobBlockWriter ?? new DefaultAppendBlobBlockWriter(); this.blobSizeLimitBytes = blobSizeLimitBytes; this.retainedBlobCountLimit = retainedBlobCountLimit; }
/// <summary> /// Construct a sink that saves logs to the specified storage account. /// </summary> /// <param name="storageAccount">The Cloud Storage Account to use to insert the log entries to.</param> /// <param name="textFormatter"></param> /// <param name="batchSizeLimit"></param> /// <param name="period"></param> /// <param name="storageContainerName">Container where the log entries will be written to. Note: Optional, setting this may impact performance</param> /// <param name="storageFileName">File name that log entries will be written to. Note: Optional, setting this may impact performance</param> /// <param name="bypassBlobCreationValidation">Bypass the exception in case the blob creation fails.</param> /// <param name="cloudBlobProvider">Cloud blob provider to get current log blob.</param> /// <param name="appendBlobBlockPreparer"></param> /// <param name="appendBlobBlockWriter"></param> public AzureBatchingBlobStorageSink( CloudStorageAccount storageAccount, ITextFormatter textFormatter, int batchSizeLimit, TimeSpan period, string storageContainerName = null, string storageFileName = null, bool bypassBlobCreationValidation = false, ICloudBlobProvider cloudBlobProvider = null, IAppendBlobBlockPreparer appendBlobBlockPreparer = null, IAppendBlobBlockWriter appendBlobBlockWriter = null) : base(batchSizeLimit, period) { this.textFormatter = textFormatter; if (string.IsNullOrEmpty(storageContainerName)) { storageContainerName = "logs"; } if (string.IsNullOrEmpty(storageFileName)) { storageFileName = "log.txt"; } this.storageAccount = storageAccount; this.storageContainerName = storageContainerName; this.blobNameFactory = new BlobNameFactory(storageFileName); this.bypassBlobCreationValidation = bypassBlobCreationValidation; this.cloudBlobProvider = cloudBlobProvider ?? new DefaultCloudBlobProvider(); this.appendBlobBlockPreparer = appendBlobBlockPreparer ?? new DefaultAppendBlobBlockPreparer(); this.appendBlobBlockWriter = appendBlobBlockWriter ?? new DefaultAppendBlobBlockWriter(); }
/// <summary> /// Construct a sink that saves logs to the specified storage account. /// </summary> /// <param name="storageAccount">The Cloud Storage Account to use to insert the log entries to.</param> /// <param name="textFormatter"></param> /// <param name="storageFolderName">Folder name that log entries will be written to.</param> /// <param name="storageFileName">File name that log entries will be written to.</param> /// <param name="bypassFolderCreationValidation">Bypass the exception in case the folder creation fails.</param> /// <param name="cloudBlobProvider">Cloud blob provider to get current log blob.</param> /// <param name="appendBlobBlockPreparer"></param> /// <param name="appendBlobBlockWriter"></param> public AzureBlobStorageSink( CloudStorageAccount storageAccount, ITextFormatter textFormatter, string storageFolderName = null, string storageFileName = null, bool bypassFolderCreationValidation = false, ICloudBlobProvider cloudBlobProvider = null, IAppendBlobBlockPreparer appendBlobBlockPreparer = null, IAppendBlobBlockWriter appendBlobBlockWriter = null) { this.textFormatter = textFormatter; if (string.IsNullOrEmpty(storageFolderName)) { storageFolderName = "logs"; } if (string.IsNullOrEmpty(storageFileName)) { storageFileName = "log.txt"; } this.storageAccount = storageAccount; this.storageFolderName = storageFolderName; blobNameFactory = new BlobNameFactory(storageFileName); this.bypassFolderCreationValidation = bypassFolderCreationValidation; this.cloudBlobProvider = cloudBlobProvider ?? new DefaultCloudBlobProvider(); this.appendBlobBlockPreparer = appendBlobBlockPreparer ?? new DefaultAppendBlobBlockPreparer(); this.appendBlobBlockWriter = appendBlobBlockWriter ?? new DefaultAppendBlobBlockWriter(); }
/// <summary> /// Construct a sink that saves logs to the specified storage account. /// </summary> /// <param name="storageAccount">The Cloud Storage Account to use to insert the log entries to.</param> /// <param name="formatProvider">Supplies culture-specific formatting information, or null.</param> /// <param name="textFormatter">The text formatter to use.</param> /// <param name="batchSizeLimit"></param> /// <param name="period"></param> /// <param name="storageContainerName">Container where the log entries will be written to.</param> /// <param name="storageFileName">File name that log entries will be written to.</param> /// <param name="cloudBlobProvider">Cloud blob provider to get current log blob.</param> /// <param name="appendBlobBlockPreparer"></param> /// <param name="appendBlobBlockWriter"></param> public AzureBatchingBlobStorageSink( CloudStorageAccount storageAccount, IFormatProvider formatProvider, ITextFormatter textFormatter, int batchSizeLimit, TimeSpan period, string storageContainerName = null, string storageFileName = null, ICloudBlobProvider cloudBlobProvider = null, IAppendBlobBlockPreparer appendBlobBlockPreparer = null, IAppendBlobBlockWriter appendBlobBlockWriter = null) : this(storageAccount, textFormatter, batchSizeLimit, period, storageContainerName, storageFileName, cloudBlobProvider : cloudBlobProvider, appendBlobBlockPreparer : appendBlobBlockPreparer, appendBlobBlockWriter : appendBlobBlockWriter) { }
/// <summary> /// Construct a sink that saves logs to the specified storage account. /// </summary> /// <param name="blobServiceClient">The Cloud Storage Client to use to insert the log entries to.</param> /// <param name="formatProvider">Supplies culture-specific formatting information, or null.</param> /// <param name="textFormatter">The text formatter to use.</param> /// <param name="storageContainerName">Container where the log entries will be written to.</param> /// <param name="storageFileName">File name that log entries will be written to.</param> /// <param name="cloudBlobProvider">Cloud blob provider to get current log blob.</param> /// <param name="appendBlobBlockPreparer"></param> /// <param name="appendBlobBlockWriter"></param> /// <param name="blobSizeLimitBytes">The maximum file size to allow before a new one is rolled, expressed in bytes.</param> /// <param name="retainedBlobCountLimit">The number of latest blobs to be retained in the container always. Deletes older blobs when this limit is crossed.</param> /// <param name="useUtcTimeZone">Use UTC Timezone for logging events.</param> public AzureBatchingBlobStorageSink( BlobServiceClient blobServiceClient, IFormatProvider formatProvider, ITextFormatter textFormatter, string storageContainerName = null, string storageFileName = null, ICloudBlobProvider cloudBlobProvider = null, IAppendBlobBlockPreparer appendBlobBlockPreparer = null, IAppendBlobBlockWriter appendBlobBlockWriter = null, long?blobSizeLimitBytes = null, int?retainedBlobCountLimit = null, bool useUtcTimeZone = false) : this(blobServiceClient, textFormatter, storageContainerName, storageFileName, cloudBlobProvider : cloudBlobProvider, appendBlobBlockPreparer : appendBlobBlockPreparer, appendBlobBlockWriter : appendBlobBlockWriter, blobSizeLimitBytes : blobSizeLimitBytes, retainedBlobCountLimit : retainedBlobCountLimit, useUtcTimeZone : useUtcTimeZone) { }
/// <summary> /// Construct a sink that saves logs to the specified storage account. /// </summary> /// <param name="cloudBlobClient">The Cloud Storage Client to use to insert the log entries to.</param> /// <param name="formatProvider">Supplies culture-specific formatting information, or null.</param> /// <param name="textFormatter">The text formatter to use.</param> /// <param name="batchSizeLimit"></param> /// <param name="period"></param> /// <param name="storageContainerName">Container where the log entries will be written to.</param> /// <param name="storageFileName">File name that log entries will be written to.</param> /// <param name="cloudBlobProvider">Cloud blob provider to get current log blob.</param> /// <param name="appendBlobBlockPreparer"></param> /// <param name="appendBlobBlockWriter"></param> /// <param name="blobSizeLimitBytes">The maximum file size to allow before a new one is rolled, expressed in bytes.</param> /// <param name="retainedBlobCountLimit">The number of latest blobs to be retained in the container always. Deletes older blobs when this limit is crossed.</param> public AzureBatchingBlobStorageSink( CloudBlobClient cloudBlobClient, IFormatProvider formatProvider, ITextFormatter textFormatter, int batchSizeLimit, TimeSpan period, string storageContainerName = null, string storageFileName = null, ICloudBlobProvider cloudBlobProvider = null, IAppendBlobBlockPreparer appendBlobBlockPreparer = null, IAppendBlobBlockWriter appendBlobBlockWriter = null, long?blobSizeLimitBytes = null, int?retainedBlobCountLimit = null) : this(cloudBlobClient, textFormatter, batchSizeLimit, period, storageContainerName, storageFileName, cloudBlobProvider : cloudBlobProvider, appendBlobBlockPreparer : appendBlobBlockPreparer, appendBlobBlockWriter : appendBlobBlockWriter, blobSizeLimitBytes : blobSizeLimitBytes, retainedBlobCountLimit : retainedBlobCountLimit) { }