public void WriteOneMessage()
        {
            var logger      = new BlackBoxManager();
            var queueWriter = new EventQueueWriter();

            logger.RegisterWriter(EventLevel.Critical, queueWriter.Write);

            logger.Write(new EventMessage(EventLevel.Critical, "Hello Critical World!"));

            Assert.Single(queueWriter.Messages);
        }
示例#2
0
        public void LogWriter()
        {
            var writer = new EventQueueWriter();

            Log.GetManager()
            .RegisterWriter(EventLevel.Debug, writer.Write);

            Log.Critical("Hello Critical World!");

            Assert.Single(writer.Messages);
        }
        public void ErrornousWriter()
        {
            var logger      = new BlackBoxManager();
            var queueWriter = new EventQueueWriter();
            var throwWriter = new EventThrowWriter();

            logger.RegisterFallbackWriter(queueWriter.Write);
            logger.RegisterWriter(EventLevel.Critical, throwWriter.Write);

            logger.Write(new EventMessage(EventLevel.Critical, "Hello Critical World!"));

            Assert.Single(throwWriter.Messages);
            Assert.True(queueWriter.Messages.Count == 2);
        }
        public void SkipDifferentLevelMessage()
        {
            var logger      = new BlackBoxManager();
            var queueWriter = new EventQueueWriter();

            logger.RegisterWriter(EventLevel.Critical, queueWriter.Write);

            logger.Write(new EventMessage(EventLevel.Debug, "Hello Debug World!"));
            logger.Write(new EventMessage(EventLevel.Trace, "Hello Trace World!"));
            logger.Write(new EventMessage(EventLevel.Info, "Hello Info World!"));
            logger.Write(new EventMessage(EventLevel.Warning, "Hello Warning World!"));
            logger.Write(new EventMessage(EventLevel.Error, "Hello Error World!"));

            Assert.Empty(queueWriter.Messages);
        }
        public void WriteAllLevelMessage()
        {
            var logger      = new BlackBoxManager();
            var queueWriter = new EventQueueWriter();

            logger.RegisterWriter(EventLevel.Debug, queueWriter.Write);

            //logger.Write(new EventMessage(EventLevel.Debug, "Hello Debug World!")); // Only when debugger is attached!
            logger.Write(new EventMessage(EventLevel.Trace, "Hello Trace World!"));
            logger.Write(new EventMessage(EventLevel.Info, "Hello Info World!"));
            logger.Write(new EventMessage(EventLevel.Warning, "Hello Warning World!"));
            logger.Write(new EventMessage(EventLevel.Error, "Hello Error World!"));
            logger.Write(new EventMessage(EventLevel.Critical, "Hello Critical World!"));

            Assert.True(queueWriter.Messages.Count == 5);
        }
        public void WriteOnlyCriticalMessage()
        {
            var logger      = new BlackBoxManager();
            var queueWriter = new EventQueueWriter();

            logger.RegisterWriter(EventLevel.Critical, queueWriter.Write);

            logger.RegisterWriter(EventLevel.Error, t => { Console.WriteLine(t.Content); });

            logger.Write(new EventMessage(EventLevel.Debug, "Hello Debug World!"));
            logger.Write(new EventMessage(EventLevel.Trace, "Hello Trace World!"));
            logger.Write(new EventMessage(EventLevel.Info, "Hello Info World!"));
            logger.Write(new EventMessage(EventLevel.Warning, "Hello Warning World!"));
            logger.Write(new EventMessage(EventLevel.Error, "Hello Error World!"));
            logger.Write(new EventMessage(EventLevel.Critical, "Hello Critical World!"));

            Assert.Single(queueWriter.Messages);
        }
        public void WriteFromMultipleThreads()
        {
            const int threadCount = 10000;

            var logger      = new BlackBoxManagerThreaded();
            var queueWriter = new EventQueueWriter();

            logger.RegisterWriter(EventLevel.Critical, queueWriter.Write);

            Task[] tasks = new Task[threadCount];
            for (int i = 0; i < tasks.Length; i++)
            {
                tasks[i] = Task.Factory.StartNew((n) =>
                {
                    logger.Write(new EventMessage(EventLevel.Critical, "Hello Critical World #" + n + " from thread id " + Thread.CurrentThread.ManagedThreadId + "!"));
                }, i);
            }

            Task.WaitAll(tasks);
            Assert.True(queueWriter.Messages.Count == threadCount);
        }