The date is formatted as per the XML (SOAP section 5) date format. I
think it is unlikely that may users will benefit from a static method of
XmlLayout to format the date. If they need to know how to format the
date then they can just look in the source code to see how it is
generated.

Of course Microsoft has deprecated the XmlConvert.ToString(DateTime)
method in .NET 2.0, so we now need to use conditional compilation for
.NET 1.0 and .NET 2.0 APIs, which may make a case for having a helper
method that just does the right thing.

Nicko

> -----Original Message-----
> From: Ron Grabowski [mailto:[EMAIL PROTECTED] 
> Sent: 14 December 2005 18:09
> To: [email protected]
> Subject: Re: svn commit: r356816 - 
> /logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs
> 
> (I can take care of the bounce myself)
> 
> When I was writing this the 
> "2005-08-24T12:00:00.0000000+01:00" format didn't jump out to 
> me as coming from XmlConvert.ToString. I kept looking for a 
> {0:s} related format. Maybe its a good idea to add a static 
> XmlLayout.ToString to allow outsiders (test cases) to format 
> the timestamp without knowing about XmlConvert. Maybe 
> not...it confused me for a while....
> 
> - Ron
> 
> ----- Forwarded Message ----
> From: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Sent: Wednesday, December 14, 2005 9:47:40 AM
> Subject: failure notice
> 
> Hi. This is the qmail-send program at apache.org.
> I'm afraid I wasn't able to deliver your message to the 
> following addresses.
> This is a permanent error; I've given up. Sorry it didn't work out.
> 
> <[email protected]>:
> Sorry, only subscribers may post. If you are a subscriber, 
> please forward this message to 
> [EMAIL PROTECTED] to get your new address 
> included (#5.7.2)
> 
> --- Below this line is a copy of the message.
> 
> Return-Path: <[EMAIL PROTECTED]>
> Received: (qmail 18078 invoked by uid 500); 14 Dec 2005 17:47:40 -0000
> Delivered-To: [EMAIL PROTECTED]
> Received: (qmail 18075 invoked by uid 99); 14 Dec 2005 17:47:40 -0000
> Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49)
>     by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Dec 2005 
> 09:47:40 -0800
> X-ASF-Spam-Status: No, hits=-9.4 required=10.0
>     tests=ALL_TRUSTED,NO_REAL_NAME
> X-Spam-Check-By: apache.org
> Received: from [209.237.227.194] (HELO minotaur.apache.org) 
> (209.237.227.194)
>     by apache.org (qpsmtpd/0.29) with SMTP; Wed, 14 Dec 2005 
> 09:47:37 -0800
> Received: (qmail 22288 invoked by uid 65534); 14 Dec 2005 
> 17:47:16 -0000
> Message-ID: <[EMAIL PROTECTED]>
> Content-Type: text/plain; charset="utf-8"
> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> Subject: svn commit: r356816 -
>  /logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs
> Date: Wed, 14 Dec 2005 17:47:08 -0000
> To: [EMAIL PROTECTED]
> From: [EMAIL PROTECTED]
> X-Mailer: svnmailer-1.0.5
> X-Virus-Checked: Checked by ClamAV on apache.org
> 
> Author: rgrabowski
> Date: Wed Dec 14 09:46:36 2005
> New Revision: 356816
> 
> URL: http://svn.apache.org/viewcvs?rev=356816&view=rev
> Log:
> Replaced hard-coded TimeStamp property of loggingEvent used 
> for testing to DateTime.Today to avoid timezone offset 
> problems when XmlConvert.ToString(loggingEvent.TimeStamp) is 
> called within XmlLayout.
> 
> Modified:
>     logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs
> 
> Modified: logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs
> URL: 
> http://svn.apache.org/viewcvs/logging/log4net/trunk/tests/src/
> Layout/XmlLayoutTest.cs?rev=356816&r1=356815&r2=356816&view=diff
> ==============================================================
> ================
> --- logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs (original)
> +++ logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs 
> Wed Dec 14 
> +++ 09:46:36 2005
> @@ -20,7 +20,7 @@
>  using System.IO;
>  using System.Diagnostics;
>  using System.Globalization;
> -
> +using System.Xml;
>  using log4net.Config;
>  using log4net.Util;
>  using log4net.Layout;
> @@ -51,13 +51,28 @@
>              ed.LoggerName="TestLogger";
>              ed.Message="Test message";
>              ed.ThreadName="TestThread";
> -            ed.TimeStamp=new DateTime(2005,8,24,12,0,0);
> +            ed.TimeStamp=DateTime.Today;
>              ed.UserName="TestRunner";
>              ed.Properties=new PropertiesDictionary();
>  
>              return ed;
>          }
>  
> +        private string createEventNode(string message)
> +        {
> +            return String.Format("<event 
> logger=\"TestLogger\" timestamp=\"{0}\" level=\"INFO\" 
> thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" 
> username=\"TestRunner\"><message>{1}</message></event>\r\n", 
> +                XmlConvert.ToString(DateTime.Today),
> +                message);
> +        }
> +
> +        private string createEventNode(string key, string value)
> +        {
> +            return String.Format("<event 
> logger=\"TestLogger\" timestamp=\"{0:s}\" level=\"INFO\" 
> thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message><properties><data name=\"{1}\" value=\"{2}\" 
> /></properties></event>\r\n",
> +                XmlConvert.ToString(DateTime.Today),
> +                key,
> +                value);
> +        }
> +
>          [Test] public void TestBasicEventLogging()
>          {
>              TextWriter writer=new StringWriter(); @@ -65,11 +80,10 @@
>              LoggingEventData evt=createBaseEvent();
>  
>              layout.Format(writer,new LoggingEvent(evt));
> +
> +            string expected = createEventNode("Test message");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message></event>\r\n",
> -                writer.ToString()
> -                );
> +            Assertion.AssertEquals    (expected, writer.ToString());
>          }
>  
>          [Test] public void TestIllegalCharacterMasking() @@ 
> -81,11 +95,10 @@
>              evt.Message="This is a masked char->\uFFFF";
>  
>              layout.Format(writer,new LoggingEvent(evt));
> +
> +            string expected = createEventNode("This is a masked 
> + char-&gt;?");
>              
> -            Assertion.AssertEquals    (
> -                                    "<event 
> logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>This 
> is a masked char-&gt;?</message></event>\r\n",
> -                                    writer.ToString()
> -                                    );
> +            Assertion.AssertEquals    (expected, writer.ToString());
>          }
>  
>          [Test] public void TestCDATAEscaping1() @@ -98,11 +111,10 @@
>              evt.Message="&&&&&&&Escape this ]]>. End here.";
>  
>              layout.Format(writer,new LoggingEvent(evt));
> +
> +            string expected = 
> createEventNode("<![CDATA[&&&&&&&Escape 
> + this ]]>]]<![CDATA[>. End here.]]>");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" 
> username=\"TestRunner\"><message><![CDATA[&&&&&&&Escape this 
> ]]>]]<![CDATA[>. End here.]]></message></event>\r\n",
> -                writer.ToString()
> -                );
> +            Assertion.AssertEquals    (expected, writer.ToString());
>          }
>  
>          [Test] public void TestCDATAEscaping2() @@ -115,11 +127,10 @@
>              evt.Message="&&&&&&&Escape the end ]]>";
>  
>              layout.Format(writer,new LoggingEvent(evt));
> +
> +            string expected = 
> createEventNode("<![CDATA[&&&&&&&Escape 
> + the end ]]>]]&gt;");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" 
> username=\"TestRunner\"><message><![CDATA[&&&&&&&Escape the 
> end ]]>]]&gt;</message></event>\r\n",
> -                writer.ToString()
> -                );
> +            Assertion.AssertEquals    (expected, writer.ToString());
>          }
>  
>          [Test] public void TestCDATAEscaping3() @@ -132,11 +143,10 @@
>              evt.Message="]]>&&&&&&&Escape the begining";
>  
>              layout.Format(writer,new LoggingEvent(evt));
> +
> +            string expected = 
> + createEventNode("<![CDATA[]]>]]<![CDATA[>&&&&&&&Escape the 
> + begining]]>");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" 
> username=\"TestRunner\"><message><![CDATA[]]>]]<![CDATA[>&&&&&
> &&Escape the begining]]></message></event>\r\n",
> -                writer.ToString()
> -                );
> +            Assertion.AssertEquals    (expected, writer.ToString());
>          }
>  
>          [Test] public void TestBase64EventLogging() @@ 
> -147,11 +157,10 @@
>  
>              layout.Base64EncodeMessage=true;
>              layout.Format(writer,new LoggingEvent(evt));
> +
> +            string expected = createEventNode("VGVzdCBtZXNzYWdl");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" 
> username=\"TestRunner\"><message>VGVzdCBtZXNzYWdl</message></e
> vent>\r\n",
> -                writer.ToString()
> -                );
> +            Assertion.AssertEquals    (expected, writer.ToString());
>          }
>  
>          [Test] public void TestPropertyEventLogging() @@ 
> -168,11 +177,10 @@
>              ILog log1 = LogManager.GetLogger(rep.Name, 
> "TestThreadProperiesPattern");
>  
>              log1.Logger.Log(new LoggingEvent(evt));
> +
> +            string expected = createEventNode("Property1",  "prop1");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message><properties><data name=\"Property1\" 
> value=\"prop1\" /></properties></event>\r\n",
> -                stringAppender.GetString()
> -                );
> +            Assertion.AssertEquals    (expected, 
> stringAppender.GetString());
>          }
>  
>          [Test] public void TestBase64PropertyEventLogging() 
> @@ -190,11 +198,10 @@
>              ILog log1 = LogManager.GetLogger(rep.Name, 
> "TestThreadProperiesPattern");
>  
>              log1.Logger.Log(new LoggingEvent(evt));
> +
> +            string expected = createEventNode("Property1", 
> "cHJvcDE=");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message><properties><data name=\"Property1\" 
> value=\"cHJvcDE=\" /></properties></event>\r\n",
> -                stringAppender.GetString()
> -                );
> +            Assertion.AssertEquals    (expected, 
> stringAppender.GetString());
>          }
>  
>          [Test] public void TestPropertyCharacterEscaping() 
> @@ -211,11 +218,10 @@
>              ILog log1 = LogManager.GetLogger(rep.Name, 
> "TestThreadProperiesPattern");
>  
>              log1.Logger.Log(new LoggingEvent(evt));
> +
> +            string expected = createEventNode("Property1", "prop1 
> + &quot;quoted&quot;");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message><properties><data name=\"Property1\" 
> value=\"prop1 &quot;quoted&quot;\" /></properties></event>\r\n",
> -                stringAppender.GetString()
> -                );
> +            Assertion.AssertEquals    (expected, 
> stringAppender.GetString());
>          }
>  
>          [Test] public void TestPropertyIllegalCharacterMasking()
> @@ -232,11 +238,10 @@
>              ILog log1 = LogManager.GetLogger(rep.Name, 
> "TestThreadProperiesPattern");
>  
>              log1.Logger.Log(new LoggingEvent(evt));
> +
> +            string expected = createEventNode("Property1", 
> "mask this 
> + -&gt;?");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message><properties><data name=\"Property1\" 
> value=\"mask this -&gt;?\" /></properties></event>\r\n",
> -                stringAppender.GetString()
> -                );
> +            Assertion.AssertEquals    (expected, 
> stringAppender.GetString());
>          }
>  
>          [Test] public void 
> TestPropertyIllegalCharacterMaskingInName()
> @@ -253,11 +258,10 @@
>              ILog log1 = LogManager.GetLogger(rep.Name, 
> "TestThreadProperiesPattern");
>  
>              log1.Logger.Log(new LoggingEvent(evt));
> +
> +            string expected = createEventNode("Property?", 
> "mask this 
> + -&gt;?");
>              
> -            Assertion.AssertEquals    (
> -                "<event logger=\"TestLogger\" 
> timestamp=\"2005-08-24T12:00:00.0000000+01:00\" 
> level=\"INFO\" thread=\"TestThread\" domain=\"Tests\" 
> identity=\"TestRunner\" username=\"TestRunner\"><message>Test 
> message</message><properties><data name=\"Property?\" 
> value=\"mask this -&gt;?\" /></properties></event>\r\n",
> -                stringAppender.GetString()
> -                );
> +            Assertion.AssertEquals    (expected, 
> stringAppender.GetString());
>          }
>      }
>  }
> 
> 
> 
> 
> 
> 

Reply via email to