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); }
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); }
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(); }
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); }
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); }
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); }