Пример #1
0
        public void W3CLoggerLayoutWithContextTest()
        {
            var httpContextMock = SetupHttpAccessorWithHttpContext("nlog-project.org:80", "http", "/Test.asp", "?t=1");

            var logFactory = new NLog.LogFactory().Setup().SetupExtensions(ext => ext.RegisterAssembly(typeof(NLog.Web.Layouts.W3CExtendedLogLayout).Assembly)).LoadConfiguration(builder =>
            {
                var layout       = new NLog.Web.Layouts.W3CExtendedLogLayout();
                var headerTarget = new NLog.Targets.MemoryTarget()
                {
                    Name = "Header", Layout = layout.Header
                };
                var bodyTarget = new NLog.Targets.MemoryTarget()
                {
                    Name = "Body", Layout = layout
                };
                builder.Configuration.AddRuleForAllLevels(headerTarget);
                builder.Configuration.AddRuleForAllLevels(bodyTarget);
            }).LogFactory;

            var logger   = logFactory.GetCurrentClassLogger();
            var logEvent = new LogEventInfo(LogLevel.Info, null, "RequestLogging");

            logger.Log(logEvent);
            string expectedFieldHeaders = "c-ip cs-username s-computername cs-method cs-uri-stem cs-uri-query sc-status sc-bytes cs-bytes time-taken cs-host cs(User-Agent)";
            string expectedFieldValues  = $"- - {Environment.MachineName} - /Test.asp ?t=1 200 7 42 - nlog-project.org -";
            string expectedHeader       = $@"#Software: Microsoft Internet Information Server{System.Environment.NewLine}#Version: 1.0{System.Environment.NewLine}#Start-Date: {logEvent.TimeStamp.ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)}{System.Environment.NewLine}#Fields: date time {expectedFieldHeaders}";
            string expectedBody         = $@"{logEvent.TimeStamp.ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)} {expectedFieldValues}";

            var header = logFactory.Configuration.FindTargetByName <NLog.Targets.MemoryTarget>("Header")?.Logs?.FirstOrDefault();
            var body   = logFactory.Configuration.FindTargetByName <NLog.Targets.MemoryTarget>("Body")?.Logs?.FirstOrDefault();

            Assert.Equal(expectedHeader, header);
            Assert.Equal(expectedBody, body);
        }
Пример #2
0
        public void ContextPropertiesILoggerTest()
        {
            var logFactory = new NLog.LogFactory();
            var logConfig  = new NLog.Config.LoggingConfiguration();
            var ilogger    = new TestLogger();
            var target     = new MicrosoftILoggerTarget(ilogger)
            {
                Layout = "${message}"
            };

            target.ContextProperties.Add(new Targets.TargetPropertyWithContext()
            {
                Name = "ThreadId", Layout = "${threadid}"
            });
            logConfig.AddRuleForAllLevels(target);
            logFactory.Configuration = logConfig;
            var logger = logFactory.GetCurrentClassLogger();

            logger.Info("Hello {Planet}", "Earth");
            Assert.Equal("Hello \"Earth\"", ilogger.LastLogMessage);
            Assert.Equal(3, ilogger.LastLogProperties.Count);
            Assert.Equal("Planet", ilogger.LastLogProperties[0].Key);
            Assert.Equal("Earth", ilogger.LastLogProperties[0].Value);
            Assert.Equal("ThreadId", ilogger.LastLogProperties[1].Key);
            Assert.Equal(System.Threading.Thread.CurrentThread.ManagedThreadId.ToString(), ilogger.LastLogProperties[1].Value);
            Assert.Equal("Hello {Planet}", ilogger.LastLogProperties[2].Value);
        }
Пример #3
0
        private void InitNLog(string logFile)
        {
            var config = new NLog.Config.LoggingConfiguration();

            var logfile = new NLog.Targets.FileTarget("logfile")
            {
                FileName = logFile, Layout = "${message}"
            };

            config.AddRule(NLog.LogLevel.Debug, NLog.LogLevel.Fatal, logfile);

            var logFactory = new NLog.LogFactory(config);

            _nLogLogger = logFactory.GetCurrentClassLogger();
        }
Пример #4
0
        public void FilterILoggerMessageTest()
        {
            var logFactory = new NLog.LogFactory();
            var logConfig  = new NLog.Config.LoggingConfiguration();
            var ilogger    = new TestLogger();

            logConfig.AddRuleForAllLevels(new MicrosoftILoggerTarget(ilogger)
            {
                Layout = "${message}"
            });
            logFactory.Configuration = logConfig;
            var logger = logFactory.GetCurrentClassLogger();

            logger.Debug("Hello World");
            Assert.Null(ilogger.LastLogMessage);
        }
Пример #5
0
        public void SimpleILoggerMessageTest()
        {
            var logFactory = new NLog.LogFactory();
            var logConfig  = new NLog.Config.LoggingConfiguration();
            var ilogger    = new TestLogger();

            logConfig.AddRuleForAllLevels(new MicrosoftILoggerTarget(ilogger)
            {
                Layout = "${message}"
            });
            logFactory.Configuration = logConfig;
            var logger = logFactory.GetCurrentClassLogger();

            logger.Info("Hello World");
            Assert.Equal("Hello World", ilogger.LastLogMessage);
            Assert.Single(ilogger.LastLogProperties);
            Assert.Equal("Hello World", ilogger.LastLogProperties[0].Value);
        }
Пример #6
0
        public void StructuredILoggerMessageTest()
        {
            var logFactory = new NLog.LogFactory();
            var logConfig  = new NLog.Config.LoggingConfiguration();
            var ilogger    = new TestLogger();

            logConfig.AddRuleForAllLevels(new MicrosoftILoggerTarget(ilogger)
            {
                Layout = "${message}"
            });
            logFactory.Configuration = logConfig;
            var logger = logFactory.GetCurrentClassLogger();

            logger.Info("Hello {Planet}", "Earth");
            Assert.Equal("Hello \"Earth\"", ilogger.LastLogMessage);
            Assert.Equal(2, ilogger.LastLogProperties.Count);
            Assert.Equal("Planet", ilogger.LastLogProperties[0].Key);
            Assert.Equal("Earth", ilogger.LastLogProperties[0].Value);
            Assert.Equal("Hello {Planet}", ilogger.LastLogProperties[1].Value);
        }