Ejemplo n.º 1
0
        public void AsyncTaskTarget_TestTimeout()
        {
            RetryingIntegrationTest(3, () =>
            {
                ILogger logger = LogManager.GetCurrentClassLogger();

                var asyncTarget = new AsyncTaskTestTarget
                {
                    Layout             = "${level}",
                    TaskTimeoutSeconds = 1
                };

                SimpleConfigurator.ConfigureForTargetLogging(asyncTarget, LogLevel.Trace);

                logger.Trace("TTT");
                logger.Debug("TIMEOUT");
                logger.Info("III");
                logger.Warn("WWW");
                logger.Error("EEE");
                logger.Fatal("FFF");
                Assert.True(asyncTarget.WaitForWriteEvent());
                Assert.NotEmpty(asyncTarget.Logs);
                LogManager.Flush();
                Assert.Equal(5, asyncTarget.Logs.Count);
                while (asyncTarget.Logs.TryDequeue(out var logEventMessage))
                {
                    Assert.Equal(-1, logEventMessage.IndexOf("Debug|"));
                }

                LogManager.Configuration = null;
            });
Ejemplo n.º 2
0
        public void AsyncTaskTarget_TestLogging()
        {
            ILogger logger = LogManager.GetCurrentClassLogger();

            var asyncTarget = new AsyncTaskTestTarget();

            asyncTarget.Layout = "${threadid}|${level}|${message}";

            SimpleConfigurator.ConfigureForTargetLogging(asyncTarget, LogLevel.Trace);
            Assert.True(asyncTarget.Logs.Count == 0);
            logger.Trace("TTT");
            logger.Debug("DDD");
            logger.Info("III");
            logger.Warn("WWW");
            logger.Error("EEE");
            logger.Fatal("FFF");
            System.Threading.Thread.Sleep(50);
            Assert.True(asyncTarget.Logs.Count != 0);
            LogManager.Flush();
            Assert.True(asyncTarget.Logs.Count == 6);
            while (asyncTarget.Logs.Count > 0)
            {
                string logEventMessage = asyncTarget.Logs.Dequeue();
                Assert.Equal(0, logEventMessage.IndexOf(System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + "|"));
            }

            LogManager.Configuration = null;
        }
Ejemplo n.º 3
0
        public void AsyncTaskTarget_TestFakeBatchWriting()
        {
            ILogger logger = LogManager.GetCurrentClassLogger();

            var asyncTarget = new AsyncTaskTestTarget
            {
                Layout                = "${level}",
                BatchSize             = 3,
                TaskDelayMilliseconds = 10
            };

            SimpleConfigurator.ConfigureForTargetLogging(asyncTarget, LogLevel.Trace);
            Assert.True(asyncTarget.Logs.Count == 0);

            foreach (var logLevel in LogLevel.AllLoggingLevels)
            {
                logger.Log(logLevel, logLevel.Name.ToUpperInvariant());
            }
            Thread.Sleep(75);
            Assert.True(asyncTarget.Logs.Count != 0);
            LogManager.Flush();
            Assert.Equal(LogLevel.MaxLevel.Ordinal + 1, asyncTarget.Logs.Count);
            Assert.Equal(LogLevel.MaxLevel.Ordinal + 1, asyncTarget.WriteTasks);

            int ordinal = 0;

            while (asyncTarget.Logs.Count > 0)
            {
                string logEventMessage = asyncTarget.Logs.Dequeue();
                var    logLevel        = LogLevel.FromString(logEventMessage);
                Assert.Equal(ordinal++, logLevel.Ordinal);
            }

            LogManager.Configuration = null;
        }
Ejemplo n.º 4
0
        public void AsyncTaskTarget_TestLogging()
        {
            ILogger logger = LogManager.GetCurrentClassLogger();

            var asyncTarget = new AsyncTaskTestTarget {
                Layout = "${threadid}|${level}|${message}|${mdlc:item=Test}"
            };

            SimpleConfigurator.ConfigureForTargetLogging(asyncTarget, LogLevel.Trace);
            NLog.Common.InternalLogger.LogLevel = LogLevel.Off;

            int  managedThreadId = 0;
            Task task;

            using (MappedDiagnosticsLogicalContext.SetScoped("Test", 42))
            {
                task = Task.Run(() =>
                {
                    managedThreadId = Thread.CurrentThread.ManagedThreadId;
                    logger.Trace("TTT");
                    logger.Debug("DDD");
                    logger.Info("III");
                    logger.Warn("WWW");
                    logger.Error("EEE");
                    logger.Fatal("FFF");
                });
            }
            Assert.True(asyncTarget.WaitForWriteEvent());
            Assert.NotEmpty(asyncTarget.Logs);
            task.Wait();
            LogManager.Flush();
            Assert.Equal(6, asyncTarget.Logs.Count);
            while (asyncTarget.Logs.TryDequeue(out var logEventMessage))
            {
                Assert.Equal(0, logEventMessage.IndexOf(managedThreadId.ToString() + "|"));
                Assert.EndsWith("|42", logEventMessage);
            }

            LogManager.Configuration = null;
        }
Ejemplo n.º 5
0
        public void AsyncTaskTarget_TestRetryException()
        {
            ILogger logger = LogManager.GetCurrentClassLogger();

            var asyncTarget = new AsyncTaskTestTarget
            {
                Layout = "${level}",
                RetryDelayMilliseconds = 10,
                RetryCount             = 3
            };

            SimpleConfigurator.ConfigureForTargetLogging(asyncTarget, LogLevel.Trace);
            Assert.True(asyncTarget.Logs.Count == 0);

            foreach (var logLevel in LogLevel.AllLoggingLevels)
            {
                logger.Log(logLevel, logLevel == LogLevel.Debug ? "EXCEPTION" : logLevel.Name.ToUpperInvariant());
            }
            Thread.Sleep(75);
            Assert.True(asyncTarget.Logs.Count != 0);
            LogManager.Flush();
            Assert.Equal(LogLevel.MaxLevel.Ordinal, asyncTarget.Logs.Count);
            Assert.Equal(LogLevel.MaxLevel.Ordinal + 4, asyncTarget.WriteTasks);

            int ordinal = 0;

            while (asyncTarget.Logs.Count > 0)
            {
                string logEventMessage = asyncTarget.Logs.Dequeue();
                var    logLevel        = LogLevel.FromString(logEventMessage);
                Assert.NotEqual(LogLevel.Debug, logLevel);
                Assert.Equal(ordinal++, logLevel.Ordinal);
                if (ordinal == LogLevel.Debug.Ordinal)
                {
                    ++ordinal;
                }
            }

            LogManager.Configuration = null;
        }
Ejemplo n.º 6
0
        public void AsyncTaskTarget_TestAsyncException()
        {
            ILogger logger = LogManager.GetCurrentClassLogger();

            var asyncTarget = new AsyncTaskTestTarget
            {
                Layout = "${level}",
                RetryDelayMilliseconds = 50
            };

            SimpleConfigurator.ConfigureForTargetLogging(asyncTarget, LogLevel.Trace);

            foreach (var logLevel in LogLevel.AllLoggingLevels)
            {
                logger.Log(logLevel, logLevel == LogLevel.Debug ? "ASYNCEXCEPTION" : logLevel.Name.ToUpperInvariant());
            }
            Assert.True(asyncTarget.WaitForWriteEvent());
            Assert.NotEmpty(asyncTarget.Logs);
            LogManager.Flush();
            Assert.Equal(LogLevel.MaxLevel.Ordinal, asyncTarget.Logs.Count);

            int ordinal = 0;

            while (asyncTarget.Logs.TryDequeue(out var logEventMessage))
            {
                var logLevel = LogLevel.FromString(logEventMessage);
                Assert.NotEqual(LogLevel.Debug, logLevel);
                Assert.Equal(ordinal++, logLevel.Ordinal);
                if (ordinal == LogLevel.Debug.Ordinal)
                {
                    ++ordinal;
                }
            }

            LogManager.Configuration = null;
        }