private void Log(LogLevel level, string machineName, string sender, object message, Exception t = null, Dictionary <string, object> parameters = null)
        {
            //-- Determine to Log or to Ignore
            if (ToIgnore(level))
            {
                return;
            }

            //-- Validate
            if (!IsConnected)
            {
                if (!IgnoreException)
                {
                    throw new Exception("Connection to Azure table storage was not established.");
                }
                else
                {
                    return;
                }
            }

            //-- Arrange
            parameters = SanitizeParameters(parameters);

            //-- Act
            try
            {
                LogMessage logMessage = new LogMessage(level, machineName, sender, message, t);
                logMessage.AddProperties(parameters);
                TableOperation insertOperation = TableOperation.Insert(logMessage);
                LogTable.Execute(insertOperation);
            }
            catch (Exception ex)
            {
                if (!IgnoreException)
                {
                    throw new Exception("Failed to log message into Azure table storage.", ex);
                }
            }
        }