internal LogMessage(string message, Utility.Level level, int id = 0) { // Set the time Time = DateTime.UtcNow; // Set the row key RowKey = string.Format(RowKeyFormat, DateTime.MaxValue.Subtract(Time).Ticks, id); // Trim the message if length is greater than max limit if (message.Length > MaxMessageLength) { message = message.Substring(0, MaxMessageLength); } // Set the message json try { values[0] = Utility.GetJsonRepresentation(MessageKey, message); values[1] = Utility.GetJsonRepresentation(LevelKey, (int)level); values[2] = Utility.GetJsonRepresentation(EventTimeKey, Time); } catch (Exception e) { Utility.Output("Message formatting is failed for message: {0}. Exception: {1}", message, e.Message); } }
private static void Validate(string message, Utility.Level level) { if (message.Length > LogMessage.MaxMessageLength) { message = message.Substring(0, LogMessage.MaxMessageLength); } int levelInt = (int)level; LogMessage lastMessage = _collection.Take(); Assert.IsNotNull(lastMessage); Assert.IsInstanceOfType(lastMessage.Time, typeof(DateTime)); Assert.IsTrue(lastMessage.Time.Subtract(DateTime.UtcNow).TotalMinutes < 1); Assert.IsTrue(lastMessage.MessageJson.Length > 0); Assert.IsTrue(lastMessage.MessageJson.Contains(Utility.GetJsonRepresentation(LogMessage.MessageKey, message))); Assert.IsTrue(lastMessage.MessageJson.Contains(Utility.GetJsonRepresentation(LogMessage.LevelKey, levelInt))); Dictionary <string, object> jsonResult = JsonConvert.DeserializeObject <Dictionary <string, object> >(lastMessage.GetJson()); Assert.IsNotNull(jsonResult); Assert.IsTrue(jsonResult.ContainsKey(LogMessage.MessageKey)); Assert.AreEqual(jsonResult[LogMessage.MessageKey], message); Assert.IsTrue(jsonResult.ContainsKey(LogMessage.LevelKey)); Assert.AreEqual(jsonResult[LogMessage.LevelKey], levelInt.ToString()); Assert.IsTrue(jsonResult.ContainsKey(LogMessage.LevelKey + Utility.OdataTypeKeySuffix)); Assert.AreEqual(jsonResult[LogMessage.LevelKey + Utility.OdataTypeKeySuffix], Utility.OdataTypeValuePrefix + levelInt.GetType().Name); }
public void Comparison_Write() { string message = "Sample log message"; Utility.Level someLevel = Utility.Level.Info; Stopwatch sw = Stopwatch.StartNew(); // Retrieve the storage account from the connection string. CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["Azure.ConnectionString"]); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); // Create the table if it doesn't exist. CloudTable table = tableClient.GetTableReference("comparisonazure"); table.CreateIfNotExists(); sw.Stop(); Console.WriteLine("Azure - Setup: " + sw.ElapsedMilliseconds); sw.Restart(); // Create a new customer entity. for (int i = 0; i < Count; i++) { SampleEntity sampleEntity = new SampleEntity(message, "SomeStringValue", (int)someLevel); TableOperation insertOperation = TableOperation.Insert(sampleEntity); table.Execute(insertOperation); } sw.Stop(); Debug.WriteLine("Azure - Insert: " + sw.ElapsedMilliseconds); sw.Restart(); // Connect LogManager.Connect(ConfigurationManager.AppSettings["Pour.Token"]); LogManager.SetContext("SomeStringValue", "SomeStringValue"); //string tableUri = ApiHelper.GetUri(LogManager.AccountUri, "comparisonpour"); sw.Stop(); Debug.WriteLine("Pour - Setup: " + sw.ElapsedMilliseconds); sw.Restart(); for (int i = 0; i < Count; i++) { LogMessage nextMessage = new LogMessage(message, someLevel, Interlocked.Increment(ref _id)); string fullMessage = nextMessage.GetJson(LogManager.ContextJson); ApiResponse response = ApiHelper.InsertEntity(LogManager.Account, LogManager.Key, LogManager.LogTableUri, LogManager.SignMethod, fullMessage); } sw.Stop(); Debug.WriteLine("Pour - Insert: " + sw.ElapsedMilliseconds); }
private void AddToCollection(string message, Utility.Level level) { message.RequireNotNull("message"); try { _logCollection.Add(new LogMessage(message, level, Interlocked.Increment(ref _logCount))); } catch (Exception e) { Utility.Output("Message {0} with level {1} couldn't be logged. Exception: {2}", message, level, e.Message); } }