コード例 #1
0
ファイル: AsyncTaskTargetTest.cs プロジェクト: zsybupt/NLog
        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;
            });
コード例 #2
0
ファイル: AsyncTaskTargetTest.cs プロジェクト: zsybupt/NLog
        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;
        }
コード例 #3
0
ファイル: AsyncTaskTargetTest.cs プロジェクト: zsybupt/NLog
        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;
        }