static void Main() { // Ensure the storage emulator is running AzureEmulatorManager.EnsureStorageEmulatorIsStarted(); // If you want to see tracing from the Picton libary, change the LogLevel to 'Trace' var minLogLevel = Logging.LogLevel.Debug; // Configure logging to the console var logProvider = new ColoredConsoleLogProvider(minLogLevel); var logger = logProvider.GetLogger("Main"); LogProvider.SetCurrentLogProvider(logProvider); // Ensure the Console is tall enough Console.WindowHeight = Math.Min(60, Console.LargestWindowHeight); // Configure where metrics are published to var datadogApiKey = Environment.GetEnvironmentVariable("DATADOG_APIKEY"); var metrics = new MetricsBuilder() .Report.OverHttp(o => { o.HttpSettings.RequestUri = new Uri($"https://app.datadoghq.com/api/v1/series?api_key={datadogApiKey}"); o.MetricsOutputFormatter = new DatadogFormatter(new DatadogFormatterOptions { Hostname = Environment.MachineName }); o.FlushInterval = TimeSpan.FromSeconds(2); }) .Build(); // Send metrics to Datadog var sendMetricsJob = new AppMetricsTaskScheduler( TimeSpan.FromSeconds(2), async() => { await Task.WhenAll(metrics.ReportRunner.RunAllAsync()); }); sendMetricsJob.Start(); // Setup the message queue in Azure storage emulator var storageAccount = CloudStorageAccount.DevelopmentStorageAccount; var queueName = "myqueue"; logger(Logging.LogLevel.Info, () => "Begin integration tests..."); var numberOfMessages = 25; logger(Logging.LogLevel.Info, () => $"Adding {numberOfMessages} string messages to the queue..."); AddStringMessagesToQueue(numberOfMessages, queueName, storageAccount, logProvider).Wait(); logger(Logging.LogLevel.Info, () => "Processing the messages in the queue..."); ProcessSimpleMessages(queueName, storageAccount, logProvider, metrics); logger(Logging.LogLevel.Info, () => $"Adding {numberOfMessages} simple messages to the queue..."); AddSimpleMessagesToQueue(numberOfMessages, queueName, storageAccount, logProvider).Wait(); logger(Logging.LogLevel.Info, () => "Processing the messages in the queue..."); ProcessSimpleMessages(queueName, storageAccount, logProvider, metrics); logger(Logging.LogLevel.Info, () => $"Adding {numberOfMessages} messages with handlers to the queue..."); AddMessagesWithHandlerToQueue(numberOfMessages, queueName, storageAccount, logProvider).Wait(); logger(Logging.LogLevel.Info, () => "Processing the messages in the queue..."); ProcessMessagesWithHandlers(queueName, storageAccount, logProvider, metrics); // Flush the console key buffer while (Console.KeyAvailable) { Console.ReadKey(true); } // Wait for user to press a key logger(Logging.LogLevel.Info, () => "Press any key to exit..."); Console.ReadKey(); }
public MyMessageHandler() { var logProvider = new ColoredConsoleLogProvider(Logging.LogLevel.Debug); _logger = logProvider.GetLogger("MyMessageHandler"); }