using ChatRoomContract; using NLog; using Participant; namespace ParticipantRabbitMQ; internal class Participant { /// /// Configures logging subsystem. /// private static void ConfigureLogging() { var config = new NLog.Config.LoggingConfiguration(); var console = new NLog.Targets.ConsoleTarget("console") { Layout = @"${date:format=HH\:mm\:ss}|${level}| ${message} ${exception}" }; config.AddTarget(console); config.AddRuleForAllLevels(console); LogManager.Configuration = config; } /// /// Entry point /// static void Main() { Logger log = LogManager.GetCurrentClassLogger(); ConfigureLogging(); while (true) { var chatRoom = new ChatRoomRabbitMQClient( RabbitMQConfig.CreateConnection(), RabbitMQConfig.ExchangeName, RabbitMQConfig.CreateClientQueueName(), RabbitMQConfig.ServerQueueName ); var participant = new ParticipantLogic(chatRoom); try { participant.Run(); } catch (Exception e) { //log whatever exception to console log.Warn(e, "Unhandled exception caught. Will restart main loop."); //prevent console spamming Thread.Sleep(2000); } } } }