public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (!IsEnabled(logLevel)) { return; } var task = Task.Factory.StartNew(() => { var date = DateTime.UtcNow.ToString("o"); var ex = exception != null ? exception.ToString().Replace(Environment.NewLine, " ") : string.Empty; var entry = $"[{date}]\t{logLevel.ToString()}\t{CategoryName}\t{state.ToString()}\t{ex}" + Environment.NewLine; if (!AppendBlob.Exists()) { AppendBlob.CreateOrReplace(); } try { using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(entry))) { AppendBlob.AppendBlock(stream); } } catch (Exception) { throw; } }); }
static void Main(string[] args) { int oneKB = 1024; //1 kb int blockSize = 512; //kb int nrBlocks = 10; int nrDirectories = 5; int nrSubFolders = 1; int nrFilesPerDirectory = 10; //Create Folder Structure CreateFolderStructure(oneKB, blockSize, nrDirectories, nrSubFolders, nrFilesPerDirectory); //Show Folder Structure and list files in each directory ShowFolderStructure("testappendblobs"); //create a new blob to append to. var blob = new AppendBlob("testappendblobs", "appendfile.bin", connectionstring); //Write To an Append Blob WriteToAppendBlob(oneKB, blockSize, nrBlocks, blob); //Show Properties from Blob ReadPropertiesFromBlob(blob); //Read bytes from AppendBlob ReadBytesFromAppendBlob(oneKB, blockSize, blob); //Delete the blob DeleteAppendBlob(blob); Console.WriteLine("Press any key"); Console.ReadLine(); }
private static void ReadPropertiesFromBlob(AppendBlob blob) { var filesizetask = blob.GetBlobProperties(); var fileProperties = filesizetask.Result; Console.WriteLine($"File is of type {fileProperties.BlobType} and has length {fileProperties.Length / 1024} kb and last modified at {fileProperties.LastModified}."); }
public string PeekLastAppendBlob(string containerName, string blobName) { lock (AppendBlob) { if (AppendBlob.TryGetValue(new KeyValuePair <string, string>(containerName, blobName), out var payload)) { return(Encoding.UTF8.GetString(payload)); } } return(null); }
private static void ReadBytesFromAppendBlob(int oneKB, int blockSize, AppendBlob blobStream) { Console.WriteLine("/n/n"); Console.WriteLine("Start reading a byte at every 1024 bytes"); var filesizetask = blobStream.GetBlobProperties(); var fileProperties = filesizetask.Result; for (int b = 0; b < fileProperties.Length; b += blockSize * oneKB) { byte[] bytesArray = null; var bytesRead = blobStream.Read(out bytesArray, b, oneKB); Console.WriteLine($"First 5 byte from position {b} had value {bytesArray[0]},{bytesArray[1]},{bytesArray[2]},{bytesArray[3]},{bytesArray[4]}"); } }
private static void CreateFolderStructure(int oneKB, int blockSize, int nrDirectories, int nrSubFolders, int nrFilesPerDirectory) { for (var d = 0; d < nrDirectories; d++) { for (var f = 0; f < nrFilesPerDirectory; f++) { var filename = $"Folder{d}/file{f}.bin"; var bStream = new AppendBlob("testappendblobs", filename, connectionstring); var oneKb = GetRandomBytes(blockSize * oneKB); bStream.Write(oneKb, 0, oneKb.Length); } for (var s = 0; s < nrSubFolders; s++) { for (var f = 0; f < nrFilesPerDirectory; f++) { var filename = $"Folder{d}/Folder{d}-{s}/file{f}.bin"; var bStream = new AppendBlob("testappendblobs", filename, connectionstring); var oneKb = GetRandomBytes(blockSize * oneKB); bStream.Write(oneKb, 0, oneKb.Length); } } } }
private static void DeleteAppendBlob(AppendBlob blob) { Console.WriteLine("Delete the blob"); blob.Remove(); }
private static void WriteToAppendBlob(int oneKB, int blockSize, int nrBlocks, AppendBlob blobStream) { Console.WriteLine("Writing data to test2.bin./n/n"); Console.WriteLine($"nrBlocks;blockSize;Seconds;kbits/sec"); var t0 = DateTime.Now; for (int i = 0; i < nrBlocks; i++) { var bytes = GetRandomBytes(blockSize * oneKB); blobStream.Write(bytes, 0, bytes.Length); } var t1 = DateTime.Now; var delta = t1 - t0; Console.WriteLine($"{nrBlocks};{blockSize};{delta.TotalSeconds};{(blockSize * 8 * nrBlocks) / delta.TotalSeconds}"); }