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>


Reply via email to