コード例 #1
0
        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;
                }
            });
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: svandenhoven/BlobsSample
        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();
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: svandenhoven/BlobsSample
        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}.");
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: svandenhoven/BlobsSample
        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]}");
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: svandenhoven/BlobsSample
        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);
                    }
                }
            }
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: svandenhoven/BlobsSample
 private static void DeleteAppendBlob(AppendBlob blob)
 {
     Console.WriteLine("Delete the blob");
     blob.Remove();
 }
コード例 #8
0
ファイル: Program.cs プロジェクト: svandenhoven/BlobsSample
        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}");
        }