public void ShouldNotEmitLogWhenNotEnabled() { var sink = new Log4NetHelper.TestSink(); var appender = Log4NetHelper.GetAppender(sink, DirectSubmissionLogLevel.Warning); var level = Level.Info; var logEvent = new LoggingEvent( new LoggingEventData { Message = "This is {SomeValue}", LoggerName = nameof(DirectSubmissionLog4NetAppenderTests), #if LOG4NET_2 TimeStampUtc = DateTime.UtcNow, #else TimeStamp = DateTime.Now, #endif Level = level, Properties = new PropertiesDictionary { ["SomeValue"] = "someValue!" } }); var proxy = Log4NetHelper.DuckCastLogEvent(logEvent); appender.DoAppend(proxy); sink.Events.Should().BeEmpty(); }
public void LoggerEnqueuesLogMessage() { var sink = new Log4NetHelper.TestSink(); var appender = Log4NetHelper.GetAppender(sink, DirectSubmissionLogLevel.Debug); var level = Level.Error; var logEvent = new LoggingEvent( new LoggingEventData { Message = "This is {SomeValue}", LoggerName = nameof(DirectSubmissionLog4NetAppenderTests), #if LOG4NET_2 TimeStampUtc = DateTime.UtcNow, #else TimeStamp = DateTime.Now, #endif Level = level, Properties = new PropertiesDictionary { ["SomeValue"] = "someValue!" } }); var proxy = Log4NetHelper.DuckCastLogEvent(logEvent); appender.DoAppend(proxy); sink.Events.Should().ContainSingle(); }
public void LoggerIncludesPropertiesInLog() { var formatter = LogSettingsHelper.GetFormatter(); var memoryAppender = new MemoryAppender(); var sink = new Log4NetHelper.TestSink(); var appender = Log4NetHelper.GetAppender(sink, DirectSubmissionLogLevel.Debug); var appenderProxy = (IAppender)appender.DuckImplement(typeof(IAppender)); var repository = log4net.LogManager.GetRepository(); BasicConfigurator.Configure(repository, memoryAppender, appenderProxy); var logger = LogManager.GetLogger(typeof(DirectSubmissionLog4NetAppenderTests)); // Set an ambient property var someKey = "some key"; var someValue = "some Value"; log4net.ThreadContext.Properties[someKey] = someValue; // write the log var message = "This is a value"; logger.Error(message); // remove the context before rendering log4net.ThreadContext.Properties.Remove(someKey); var logEvent = sink.Events.Should().ContainSingle().Subject; // get the rendered log var sb = new StringBuilder(); logEvent.Format(sb, formatter); var log = sb.ToString(); log.Should() .Contain(message) .And.Contain(someKey) .And.Contain(someValue) .And.Contain(DirectSubmissionLogLevelExtensions.Error); }