Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }