2016-07-18 5 views
0

Ich schreibe, um Sie über solche Frage zu stellen. Also ich habe eine Methode, die die Informationen der Ausnahme in die XML-Datei schreibt, aber wenn irgendeine Ausnahme verarbeitet wird, ersetzt diese Methode alle, die in dieser Datei enthalten sind.ExceptionLogger mit XML

public void WriteIntoFile() 
     { 
      XDocument xdoc = new XDocument(
      new XElement("Exceptions", 
       new XElement("Exception", 
        new XElement("Message",this.ErrorMessage.ToString()) 
        ))); 

      xdoc.Save("1.xml"); 
     } 

Bitte, damit helfen Sie mir

+1

Siehe [Anfügen einer vorhandenen XML-Datei] (http://stackoverflow.com/questions/2645440/appending-an- existing-xml-datei). Aber ich würde empfehlen, ein Logging-Framework wie [NLog] (http://nlog-project.org/) zu verwenden. –

+0

Sind Sie sicher, dass das Schreiben Ihres eigenen Logging-Frameworks der beste Ansatz ist? Sie müssen die Leistung berücksichtigen, wenn die Protokolldatei umfangreich wird, und entscheiden, was zu tun ist, wenn der Datenträger voll wird oder wenn Sie jeden Tag eine neue Protokolldatei erstellen oder wenn die Protokolldatei eine bestimmte Größe überschreitet . Dieses Problem wurde bereits durch mehrere Protokollierungsframeworks gelöst. Neben NLog könnte auch [log4net] (https://logging.apache.org/log4net/) berücksichtigt werden. –

Antwort

0

Dies sollte den Job tun, existiert die Datei unter der Annahme, und: Ich möchte diese Methode Write-Datei eine neue Informationen über Ausnahme -Code meiner Methode Ende ist unten angegeben Sie erstellen einen neuen Knotenaufruf "Ausnahmen".

public void WriteIntoFile(string Message) 
    { 
     const string Path = "C:\\Temp\\Log.xml"; 

     XmlDocument MyDocument = new XmlDocument(); 
     MyDocument.Load(Path); 

     XmlNode ExceptionsNode = MyDocument.CreateElement("Exceptions"); 
     XmlNode ExceptionNode = MyDocument.CreateElement("Exception"); 
     XmlNode MessageNode = MyDocument.CreateElement("Message"); 

     MessageNode.InnerText = Message; 

     ExceptionNode.AppendChild(MessageNode); 
     ExceptionsNode.AppendChild(ExceptionNode); 

     MyDocument.AppendChild(ExceptionsNode); 
    } 

, wenn Sie die "Exception" wollen - Knoten anhängen zu einem bestehenden "Ausnahmen" Knoten, verwenden Sie diese:

 XmlNode ExceptionsNode = MyDocument.SelectSingleNode("/Exceptions"); 

Grüße aus Österreich.