Link to home
Start Free TrialLog in
Avatar of xenia27
xenia27Flag for Taiwan, Province of China

asked on

Write XML Log

Hi,

I want to write a log in xml format...a simple log...just recording date and time and some context...
This is what I do...

WriteLog("Start Program...");
WriteLog("Testing 1...");
WriteLog("Testing 2...");

public void WriteLog(string logstr)
{
            XmlTextWriter   xmlWriter = new XmlTextWriter("HttpListenerLog.xml", System.Text.Encoding.UTF8);
            DateTime        dt = DateTime.Now;

            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
            xmlWriter.WriteStartElement("MSG");
            xmlWriter.WriteAttributeString("Time", dt.ToString());
            xmlWriter.WriteAttributeString("Msg", logstr);
           
            xmlWriter.Close();
}

Here is what I wanna see...
<?xml version='1.0' encoding='UTF-8'?>
<MSG>
<INFO Time="2006/11/1 AM 11:08:48" Msg="Start Program..." />
<INFO Time="2006/11/1 AM 11:08:50" Msg="Testing 1..."/>
</MSG>

Something like this.  How can I modify my code to do this?
Avatar of NewMom2Brandon
NewMom2Brandon

public void WriteLog(string logstr)
{
        DateTime        dt = DateTime.Now;

        XmlTextWriter   xmlWriter = new XmlTextWriter("HttpListenerLog.xml", System.Text.Encoding.UTF8);
       
         //This is the start of the document      
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");

            xmlWriter.WriteStartElement("MSG");
            xmlWriter.WriteStartElement("INFO");
            xmlWriter.WriteAttributeString("Time", dt.ToString());
            xmlWriter.WriteAttributeString("Msg", logstr);
            xmlWriter.WriteEndElement();
            xmlWriter.WriteEndElement();

         //this is the end of the document
         xmlWriter.WriteEndDocument();              
         xmlWriter.Flush();
         xmlWriter.Close();

}

you will need to do a foreach inside your function to get all of the INFO fields.

public void WriteLog(string logstr)
{
        DateTime        dt = DateTime.Now;

        XmlTextWriter   xmlWriter = new XmlTextWriter("HttpListenerLog.xml", System.Text.Encoding.UTF8);
       
         //This is the start of the document      
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");

            xmlWriter.WriteStartElement("MSG");
****Do a foreach here
            xmlWriter.WriteStartElement("INFO");
            xmlWriter.WriteAttributeString("Time", dt.ToString());
            xmlWriter.WriteAttributeString("Msg", logstr);
            xmlWriter.WriteEndElement();
*** end foreach
            xmlWriter.WriteEndElement();

         //this is the end of the document
         xmlWriter.WriteEndDocument();              
         xmlWriter.Flush();
         xmlWriter.Close();

}
Avatar of xenia27

ASKER

If I have something existed in HttpListenerLog.xml file and I would like to keep it in my file and add new context, how can I do so?
Thanks for your help~
ASKER CERTIFIED SOLUTION
Avatar of NewMom2Brandon
NewMom2Brandon

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of xenia27

ASKER

Thanks for your help~ ^^