PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/Raven.Tests/Abstractions/Logging/LogProviders/Log4NetLogManagerLoggingEnabledTests.cs

https://github.com/barryhagan/ravendb
C# | 178 lines | 156 code | 22 blank | 0 comment | 3 complexity | 7a748e70f24cefa401d009bec4666e7f MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, CC-BY-SA-3.0
  1. using System;
  2. using System.Linq;
  3. using Raven.Abstractions.Logging;
  4. using Raven.Abstractions.Logging.LogProviders;
  5. using Xunit;
  6. using log4net.Appender;
  7. using log4net.Config;
  8. using log4net.Core;
  9. using LogManager = log4net.LogManager;
  10. namespace Raven.Tests.Abstractions.Logging.LogProviders
  11. {
  12. public class Log4NetLogManagerLoggingEnabledTests : IDisposable
  13. {
  14. private readonly Log4NetLogManager log4NetLogManager;
  15. private readonly MemoryAppender memoryAppender;
  16. private readonly ILog sut;
  17. public Log4NetLogManagerLoggingEnabledTests()
  18. {
  19. Log4NetLogManager.ProviderIsAvailableOverride = true;
  20. memoryAppender = new MemoryAppender();
  21. BasicConfigurator.Configure(memoryAppender);
  22. log4NetLogManager = new Log4NetLogManager();
  23. sut = log4NetLogManager.GetLogger("Test");
  24. }
  25. public void Dispose()
  26. {
  27. LogManager.Shutdown();
  28. }
  29. private string GetSingleMessage()
  30. {
  31. LoggingEvent loggingEvent = memoryAppender.GetEvents().Single();
  32. return string.Format("{0}|{1}|{2}",
  33. loggingEvent.Level,
  34. loggingEvent.MessageObject,
  35. loggingEvent.ExceptionObject != null ? loggingEvent.ExceptionObject.Message : string.Empty);
  36. }
  37. private string GetSingleMessageWithNestedContext()
  38. {
  39. LoggingEvent loggingEvent = memoryAppender.GetEvents().Single();
  40. return string.Format("{0}|{1}|{2}|{3}",
  41. loggingEvent.Level,
  42. loggingEvent.Properties.Contains("NDC") ? loggingEvent.Properties["NDC"] : string.Empty,
  43. loggingEvent.MessageObject,
  44. loggingEvent.ExceptionObject != null ? loggingEvent.ExceptionObject.Message : string.Empty);
  45. }
  46. private string GetSingleMessageWithMappedContext(string key)
  47. {
  48. LoggingEvent loggingEvent = memoryAppender.GetEvents().Single();
  49. return string.Format("{0}|{1}|{2}|{3}",
  50. loggingEvent.Level,
  51. key + "=" + (loggingEvent.Properties.Contains(key) ? loggingEvent.Properties[key] : string.Empty),
  52. loggingEvent.MessageObject,
  53. loggingEvent.ExceptionObject != null ? loggingEvent.ExceptionObject.Message : string.Empty);
  54. }
  55. [Fact]
  56. public void Should_be_able_to_get_IsWarnEnabled()
  57. {
  58. Assert.True(sut.IsWarnEnabled);
  59. }
  60. [Fact]
  61. public void Should_be_able_to_get_IsDebugEnabled()
  62. {
  63. Assert.True(sut.IsDebugEnabled);
  64. }
  65. [Fact]
  66. public void Should_be_able_to_log_trace_message()
  67. {
  68. sut.Log(LogLevel.Trace, () => "m");
  69. Assert.Equal("DEBUG|m|", GetSingleMessage()); //Trace messages in log4net are rendered as Debug
  70. }
  71. [Fact]
  72. public void Should_be_able_to_log_trace_exception()
  73. {
  74. sut.Log(LogLevel.Trace, () => "m", new Exception("e"));
  75. Assert.Equal("DEBUG|m|e", GetSingleMessage()); //Trace messages in log4net are rendered as Debug
  76. }
  77. [Fact]
  78. public void Should_be_able_to_log_debug_message()
  79. {
  80. sut.Log(LogLevel.Debug, () => "m");
  81. Assert.Equal("DEBUG|m|", GetSingleMessage());
  82. }
  83. [Fact]
  84. public void Should_be_able_to_log_debug_exception()
  85. {
  86. sut.Log(LogLevel.Debug, () => "m", new Exception("e"));
  87. Assert.Equal("DEBUG|m|e", GetSingleMessage());
  88. }
  89. [Fact]
  90. public void Should_be_able_to_log_info_message()
  91. {
  92. sut.Log(LogLevel.Info, () => "m");
  93. Assert.Equal("INFO|m|", GetSingleMessage());
  94. }
  95. [Fact]
  96. public void Should_be_able_to_log_info_exception()
  97. {
  98. sut.Log(LogLevel.Info, () => "m", new Exception("e"));
  99. Assert.Equal("INFO|m|e", GetSingleMessage());
  100. }
  101. [Fact]
  102. public void Should_be_able_to_log_warn_message()
  103. {
  104. sut.Log(LogLevel.Warn, () => "m");
  105. Assert.Equal("WARN|m|", GetSingleMessage());
  106. }
  107. [Fact]
  108. public void Should_be_able_to_log_warn_exception()
  109. {
  110. sut.Log(LogLevel.Warn, () => "m", new Exception("e"));
  111. Assert.Equal("WARN|m|e", GetSingleMessage());
  112. }
  113. [Fact]
  114. public void Should_be_able_to_log_error_message()
  115. {
  116. sut.Log(LogLevel.Error, () => "m");
  117. Assert.Equal("ERROR|m|", GetSingleMessage());
  118. }
  119. [Fact]
  120. public void Should_be_able_to_log_error_exception()
  121. {
  122. sut.Log(LogLevel.Error, () => "m", new Exception("e"));
  123. Assert.Equal("ERROR|m|e", GetSingleMessage());
  124. }
  125. [Fact]
  126. public void Should_be_able_to_log_fatal_message()
  127. {
  128. sut.Log(LogLevel.Fatal, () => "m");
  129. Assert.Equal("FATAL|m|", GetSingleMessage());
  130. }
  131. [Fact]
  132. public void Should_be_able_to_log_fatal_exception()
  133. {
  134. sut.Log(LogLevel.Fatal, () => "m", new Exception("e"));
  135. Assert.Equal("FATAL|m|e", GetSingleMessage());
  136. }
  137. [Fact]
  138. public void Can_open_nested_context()
  139. {
  140. using (log4NetLogManager.OpenNestedConext("Context"))
  141. {
  142. sut.Log(LogLevel.Warn, () => "m");
  143. }
  144. Assert.Equal("WARN|Context|m|", GetSingleMessageWithNestedContext());
  145. }
  146. [Fact]
  147. public void Can_open_mapped_context()
  148. {
  149. using (log4NetLogManager.OpenMappedContext("Key", "Value"))
  150. {
  151. sut.Log(LogLevel.Warn, () => "m");
  152. }
  153. Assert.Equal("WARN|Key=Value|m|", GetSingleMessageWithMappedContext("Key"));
  154. }
  155. }
  156. }