public void LoggerUDP_Test()
        {
            int    bufferLimit = 7, loggersCount = 10000;
            string clientIP   = "127.0.0.1";
            int    clientPort = 8000;
            string serverIP   = "127.0.0.1";
            int    serverPort = 8888;

            Logger_UDP_Test server = new Logger_UDP_Test(serverIP, serverPort, loggersCount);

            server.ReceiveMessages();
            LoggerTarget_UDP loggerUDP = new LoggerTarget_UDP(clientIP, clientPort, serverIP, serverPort);

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerUDP };
            Logger          logger        = new Logger(bufferLimit, loggerTargets);

            for (int i = 0; i < loggersCount; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1)));
            }

            logger.LoggerFlushControl();
            server.Close();
            Assert.AreEqual(Logger_UDP_Test.udp_count, 10000);
        }
示例#2
0
        public static void AddLoggerTarget(ILoggerTarget target)
        {
            if (LoggerTargets.Contains(target))
                return;

            LoggerTargets.Add(target);
        }
示例#3
0
        public void CheckFlushOrderByThreads()
        {
            ILoggerTarget[] loggerTarget = new ILoggerTarget[2];
            loggerTarget[0] = fileTarget;
            loggerTarget[1] = udpPortTarget;

            Logger logger = new Logger(2, loggerTarget);

            ListenerLogsFromUdpPort listener = new ListenerLogsFromUdpPort(port);

            listener.StartListen();

            LogThreadPool.RunAndWaitLogingThreads(10, 2, logger);
            while (!logger.IsFlushLogThreadPoolClear)
            {
                ;
            }

            LoggerWithFileTargetTest.TestMethod(targetFileName);

            listener.StopListen();
            while (listener.IsRunningListenerThread)
            {
                ;
            }
        }
示例#4
0
文件: Logger.cs 项目: jajanuj/GitTest
 public static void DeregisterPresenter(ILoggerTarget logTargetView)
 {
     Log.ShowLog -= delegate(string obj)
     {
         logTargetView.SetCommandLine(obj);
     };
 }
示例#5
0
		public static bool Import(string fileName, ILoggerTarget<LoggedChat> target, int limitEndOfStreamImportToNumberOfBytes = 1048576)
		{
			List<ILoggerTarget<LoggedChat>> list = new List<ILoggerTarget<LoggedChat>>();

			list.Add(target);

			return Import(fileName, list, limitEndOfStreamImportToNumberOfBytes);
		}
示例#6
0
        public static bool Import(string fileName, ILoggerTarget <LoggedChat> target, int limitEndOfStreamImportToNumberOfBytes = 1048576)
        {
            List <ILoggerTarget <LoggedChat> > list = new List <ILoggerTarget <LoggedChat> >();

            list.Add(target);

            return(Import(fileName, list, limitEndOfStreamImportToNumberOfBytes));
        }
示例#7
0
        public static void RegisterTarget(ILoggerTarget target)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target), "Logger target cannot be null");
            }

            Targets.Add(target);
        }
示例#8
0
        static void Main(string[] args)
        {
            int bufferLimit = 5;

            ILoggerTarget[] logTarget  = new ILoggerTarget[] { new LoggerTargetFile("FileLog.txt"), new LoggerTargetUdp("127.0.0.1", 9000, "127.0.0.1", 10000) };
            var             controller = new LogsCreator(new Logger(bufferLimit, logTarget));

            controller.CreateLogs(10000, LogLevel.Info);
            Console.ReadKey();
        }
        public void CheckFlushOrderInFileTargetByThreads()
        {
            ILoggerTarget[] loggerTargets = new ILoggerTarget[1];
            loggerTargets[0] = new FileTarget(targetFileName);
            Logger logger = new Logger(2, loggerTargets);

            LogThreadPool.RunAndWaitLogingThreads(50, 2, logger);

            while (!logger.IsFlushLogThreadPoolClear)
            {
                ;
            }

            TestMethod(targetFileName);
        }
        public void LoggerFile_Test()
        {
            int          bufferLimit = 3, loggersCount = 10000;
            LoggerTarget loggerFile = new LoggerTarget("E:\\Test_Logger_File.txt");

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerFile };
            Logger          logger        = new Logger(bufferLimit, loggerTargets);

            for (int i = 0; i < loggersCount; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1) + " start"));
            }

            logger.LoggerFlushControl();
            loggerFile.CloseFile();
        }
示例#11
0
        public void TestMethod_TestOneTarget()
        {
            int           bufferLimit = 1, logsCount = 10000;
            TestTarget    testTarget    = new TestTarget();
            StringBuilder stringBuilder = new StringBuilder();

            ILoggerTarget[] logTarget  = new ILoggerTarget[] { testTarget };
            var             controller = new LogsCreator(new Logger(bufferLimit, logTarget));

            controller.CreateLogs(logsCount, LogLevel.Info);
            for (int i = 0; i < logsCount; i++)
            {
                stringBuilder.Append(i);
            }
            CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), testTarget.GetMessage());
            testTarget.Close();
        }
        public void TestMethod_TestUdpTarget()
        {
            index = 0;
            byte            bufferLimit   = 5;
            int             logsCount     = 100;
            TestUdpServer   udpServer     = new TestUdpServer("127.0.0.1", 9000);
            LoggerTargetUdp targetUdp     = new LoggerTargetUdp("127.0.0.1", 9000, "127.0.0.1", 10000);
            StringBuilder   stringBuilder = new StringBuilder();

            ILoggerTarget[] logTarget = new ILoggerTarget[] { targetUdp };
            udpServer.StartReceive();

            Logger logger = new Logger(bufferLimit, logTarget);

            Task.Run(() =>
            {
                logger.ProcessingQueue();
            });

            for (int i = 0; i < logsCount; i++)
            {
                string a = "task " + i;
                Task.Run(() =>
                {
                    logger.Log(LogLevel.Info, a);
                    index++;
                });
            }

            while (index != logsCount)
            {
                if (index == logsCount)
                {
                    logger.FlushReamainLogs();

                    for (int i = 0; i < logsCount; i++)
                    {
                        stringBuilder.Append(i);
                    }
                    udpServer.Synchronize();
                    udpServer.Close();
                    CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), udpServer.GetMessage());
                }
            }
        }
        public void TestMethod_TestTwoTargets()
        {
            index = 0;
            byte          bufferLimit      = 1;
            int           logsCount        = 10;
            TestTarget    firstTestTarget  = new TestTarget();
            TestTarget    secondTestTarget = new TestTarget();
            StringBuilder stringBuilder    = new StringBuilder();

            ILoggerTarget[] logTarget = new ILoggerTarget[] { firstTestTarget, secondTestTarget };
            Logger          logger    = new Logger(bufferLimit, logTarget);

            Task.Run(() =>
            {
                logger.ProcessingQueue();
            });

            for (int i = 0; i < logsCount; i++)
            {
                string a = "task " + i;
                Task.Run(() =>
                {
                    logger.Log(LogLevel.Info, a);
                    index++;
                });
            }

            while (index != logsCount)
            {
                if (index == logsCount)
                {
                    logger.FlushReamainLogs();

                    for (int i = 0; i < logsCount; i++)
                    {
                        stringBuilder.Append(i);
                    }
                    CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), firstTestTarget.GetMessage());
                    firstTestTarget.Close();
                    CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), secondTestTarget.GetMessage());
                    secondTestTarget.Close();
                }
            }
        }
        public void LoggerUDP_Test()
        {
            int              bufferLimit = 3, loggersCount = 10000;
            string           clientIP   = "127.0.0.1";
            int              clientPort = 8000;
            string           serverIP   = "127.0.0.1";
            int              serverPort = 8888;
            LoggerTarget_UDP loggerUDP  = new LoggerTarget_UDP(clientIP, clientPort, serverIP, serverPort);

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerUDP };
            Logger          logger        = new Logger(bufferLimit, loggerTargets);

            for (int i = 0; i < loggersCount; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1) + " start"));
            }

            logger.LoggerFlushControl();
            loggerUDP.Close();
        }
示例#15
0
        public void TestMethod_TestTwoTargets()
        {
            int           bufferLimit = 5, logsCount = 10000;
            TestTarget    firstTestTarget  = new TestTarget();
            TestTarget    secondTestTarget = new TestTarget();
            StringBuilder stringBuilder    = new StringBuilder();

            ILoggerTarget[] logTarget   = new ILoggerTarget[] { firstTestTarget, secondTestTarget };
            var             logsCreator = new LogsCreator(new Logger(bufferLimit, logTarget));

            logsCreator.CreateLogs(logsCount, LogLevel.Debug);
            for (int i = 0; i < logsCount; i++)
            {
                stringBuilder.Append(i);
            }
            CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), firstTestTarget.GetMessage());
            firstTestTarget.Close();
            CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), secondTestTarget.GetMessage());
            secondTestTarget.Close();
        }
示例#16
0
        public void TestMethod_TestUdpTarget()
        {
            int             bufferLimit = 5, logsCount = 100;
            TestUdpServer   udpServer     = new TestUdpServer("127.0.0.1", 9000);
            LoggerTargetUdp targetUdp     = new LoggerTargetUdp("127.0.0.1", 9000, "127.0.0.1", 10000);
            StringBuilder   stringBuilder = new StringBuilder();

            ILoggerTarget[] logTarget = new ILoggerTarget[] { targetUdp };
            udpServer.StartReceive();
            var logsCreator = new LogsCreator(new Logger(bufferLimit, logTarget));

            logsCreator.CreateLogs(logsCount, LogLevel.Debug);
            for (int i = 0; i < logsCount; i++)
            {
                stringBuilder.Append(i);
            }
            udpServer.Synchronize();
            udpServer.Close();
            CollectionAssert.AreEqual(Encoding.Default.GetBytes(stringBuilder.ToString()), udpServer.GetMessage());
        }
示例#17
0
        private static void Main(string[] args)
        {
            Console.Write("Input limit of buffer:");
            byte limit = Convert.ToByte(Console.ReadLine());

            Console.Write("Input count logs:");
            int countLogs = Convert.ToInt32(Console.ReadLine());

            FileStream   fileStream   = new FileStream(@"C:\My Documents\GitHub\MPP-LAB3--Concurrent-logger\Concurrent logger\Concurrent logger\output.txt", FileMode.OpenOrCreate);
            LoggerTarget loggetTarget = new LoggerTarget(fileStream);

            ILoggerTarget[] iLoggerTarget = new ILoggerTarget[] { loggetTarget };
            Logger          logger        = new Logger(limit, iLoggerTarget);

            Task.Run(() =>
            {
                logger.ProcessingQueue();
            });

            for (int i = 0; i < countLogs; i++)
            {
                string a = "task " + i;
                Task.Run(() =>
                {
                    logger.Log(LogLevel.Info, a);
                    index++;
                });
            }

            while (index != countLogs)
            {
                if (index == countLogs)
                {
                    logger.FlushReamainLogs();
                    fileStream.Close();
                    fileStream.Dispose();

                    Console.ReadKey();
                }
            }
        }
示例#18
0
        static void Main(string[] args)
        {
            LoggerTarget loggerFile = new LoggerTarget("E:\\LoggerFile.txt");

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerFile };

            Console.WriteLine("Введите максимальное количество объектов в буфере: ");
            int bufferLimit = Convert.ToInt32(Console.ReadLine());

            Logger logger = new Logger(bufferLimit, loggerTargets);

            for (int i = 0; i < 100000; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1) + " start"));
            }

            logger.LoggerFlushControl();
            loggerFile.CloseFile();
            Console.WriteLine("-----------------");
            Console.WriteLine("Работа завершена!");
        }
示例#19
0
        public void CheckFlushOrderInUdpPortTargetByThreads()
        {
            ILoggerTarget[] loggerTargets = new ILoggerTarget[1];
            loggerTargets[0] = udpPortTarget;
            Logger logger = new Logger(2, loggerTargets);

            ListenerLogsFromUdpPort listener = new ListenerLogsFromUdpPort(port);

            listener.StartListen();

            LogThreadPool.RunAndWaitLogingThreads(10, 2, logger);
            while (!logger.IsFlushLogThreadPoolClear)
            {
                ;
            }


            listener.StopListen();
            while (listener.IsRunningListenerThread)
            {
                ;
            }
        }
        public void LoggerFile_Test()
        {
            int bufferLimit = 3, loggersCount = 1000;
            int count = 0, i = 0;

            string[] allMessages = new string[1000];

            LoggerTarget loggerFile = new LoggerTarget("E:\\Test_Logger_File.txt");

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerFile };
            Logger          logger        = new Logger(bufferLimit, loggerTargets);

            for (i = 0; i < loggersCount; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1)));
            }

            for (i = 0; i < loggersCount; i++)
            {
                allMessages[i] = LogLevel.Info + " task" + (i + 1);
            }

            logger.LoggerFlushControl();
            loggerFile.CloseFile();

            string[] fileText = File.ReadAllLines("E:\\Test_Logger_File.txt");
            i = 0;
            foreach (string line in fileText)
            {
                if (line.EndsWith(allMessages[i]))
                {
                    count++;
                }
                i++;
            }
            Assert.AreEqual(count, 1000);
        }
 public static void Trace(this ILoggerTarget log, string message) => log.Log(message, LogLevel.Trace);
 private async Task FlushAsync(ILoggerTarget loggerTarget, LogInfo[] logsInfo)
 {
     bool result = await loggerTarget.FlushAsync(logsInfo);
 }
示例#23
0
 public void AddTarget(ILoggerTarget target)
 {
     targets.Add(target);
 }
示例#24
0
 public static void RegisterLoggerTarget(ILoggerTarget target)
 {
     _instance._targets.Add(target);
 }
 public static void Error(this ILoggerTarget log, string message) => log.Log(message, LogLevel.Error);
 public static void Warn(this ILoggerTarget log, string message) => log.Log(message, LogLevel.Warn);
 public static void Debug(this ILoggerTarget log, string message) => log.Log(message, LogLevel.Debug);
示例#28
0
 public ILogger WithTarget(ILoggerTarget target)
 {
     _loggerTargets.Add(target);
     return(this);
 }
 public static void Info(this ILoggerTarget log, string message) => log.Log(message, LogLevel.Info);