Author: dpsenner Date: Sun Nov 1 17:54:47 2015 New Revision: 1711832 URL: http://svn.apache.org/viewvc?rev=1711832&view=rev Log: Added date header in SmtpPickupDirAppender (closes #18)
Modified: logging/log4net/trunk/src/Appender/SmtpPickupDirAppender.cs logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs Modified: logging/log4net/trunk/src/Appender/SmtpPickupDirAppender.cs URL: http://svn.apache.org/viewvc/logging/log4net/trunk/src/Appender/SmtpPickupDirAppender.cs?rev=1711832&r1=1711831&r2=1711832&view=diff ============================================================================== --- logging/log4net/trunk/src/Appender/SmtpPickupDirAppender.cs (original) +++ logging/log4net/trunk/src/Appender/SmtpPickupDirAppender.cs Sun Nov 1 17:54:47 2015 @@ -195,7 +195,8 @@ namespace log4net.Appender { writer.WriteLine("To: " + m_to); writer.WriteLine("From: " + m_from); - writer.WriteLine("Subject: " + m_subject); + writer.WriteLine("Subject: " + m_subject); + writer.WriteLine("Date: " + DateTime.UtcNow.ToString("r")); writer.WriteLine(""); string t = Layout.Header; Modified: logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs?rev=1711832&r1=1711831&r2=1711832&view=diff ============================================================================== --- logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs (original) +++ logging/log4net/trunk/tests/src/Appender/SmtpPickupDirAppenderTest.cs Sun Nov 1 17:54:47 2015 @@ -167,6 +167,39 @@ namespace log4net.Tests.Appender h.ResetConfiguration(); //Replace the repository selector so that we can recreate the hierarchy with the same name if necessary LoggerManager.RepositorySelector = new DefaultRepositorySelector(typeof(log4net.Repository.Hierarchy.Hierarchy)); + } + + /// <summary> + /// Tests if the sent message contained the date header. + /// </summary> + [Test] + public void TestOutputContainsSentDate() + { + SilentErrorHandler sh = new SilentErrorHandler(); + SmtpPickupDirAppender appender = CreateSmtpPickupDirAppender(sh); + ILogger log = CreateLogger(appender); + log.Log(GetType(), Level.Info, "This is a message", null); + log.Log(GetType(), Level.Info, "This is a message 2", null); + DestroyLogger(); + + Assert.AreEqual(1, Directory.GetFiles(_testPickupDir).Length); + string[] fileContent = File.ReadAllLines((Directory.GetFiles(_testPickupDir)[0])); + bool hasDateHeader = false; + const string dateHeaderStart = "Date: "; + foreach (string line in fileContent) + { + if(line.StartsWith(dateHeaderStart)) + { + var datePart = line.Substring(dateHeaderStart.Length); + var date = DateTime.ParseExact(datePart, "r", System.Globalization.CultureInfo.InvariantCulture); + var diff = Math.Abs( (DateTime.UtcNow - date).TotalMilliseconds); + Assert.LessOrEqual(diff, 1000, "Times should be equal, allowing a diff of one second to make test robust"); + hasDateHeader = true; + } + } + Assert.IsTrue(hasDateHeader, "Output must contains a date header"); + + Assert.AreEqual("", sh.Message, "Unexpected error message"); } /// <summary>