2014-11-11 3 views
0

XML 파일에 오류를 추가하려고합니다. 여기서 원하는대로 추가 할 수 없습니다.log4net - XML ​​파일에 오류 추가

아래와 같이 XmlLayout 형식 메서드를 재정의하는 사용자 지정 레이아웃을 사용하고 있습니다.

public class MyXmlLayout : log4net.Layout.XmlLayout 
{ 
    public static bool isFirstTime = true; 

    protected override void FormatXml(System.Xml.XmlWriter writer, LoggingEvent loggingEvent) 
    { 
     if (isFirstTime) 
     { 
      writer.WriteStartDocument(); 
      writer.WriteStartElement("Exceptions"); 
     } 

     writer.WriteStartElement("Exception"); 

     writer.WriteStartElement("Error"); 
     writer.WriteAttributeString("Date", loggingEvent.TimeStamp.ToUniversalTime().ToString()); 
     writer.WriteAttributeString("User", loggingEvent.UserName); 
     writer.WriteString(loggingEvent.RenderedMessage); 

     writer.WriteEndElement(); 
     writer.WriteEndElement(); 

     if (isFirstTime) 
     { 
      writer.WriteEndElement(); 
      writer.WriteEndDocument(); 

      isFirstTime = false; 
     } 
    } 
} 

예, 위 코드를 통해 추가했지만 문제는 XML 파일을 적절한 형식이 아닌 것으로 읽을 수 없습니다.

<?xml version="1.0" encoding="Windows-1252"?> 
 
<Exceptions> 
 
\t <Exception> 
 
\t \t <Error Date="11-11-2014 13:47:53" User="SOURCEEDGE SunilKumar">Exception 1</Error> 
 
\t </Exception> 
 
</Exceptions> 
 

 
<?xml version="1.0" encoding="Windows-1252"?> 
 
<Exceptions> 
 
\t <Exception> 
 
\t \t <Error Date="11-11-2014 14:01:44" User="SOURCEEDGE\SunilKumar">Exception 2</Error> 
 
\t </Exception> 
 
</Exceptions>

그리고 무엇 그것이 있어야하는 것은 같은

위의 코드에 의해 생성 된 XML 보인다

<?xml version="1.0" encoding="Windows-1252"?> 
 
<Exceptions> 
 
    <Exception> 
 
    <Error Date="11-11-2014 13:47:53" User="SOURCEEDGE\SunilKumar">Exception 1</Error> 
 
    </Exception> 
 
    <Exception> 
 
    <Error Date="11-11-2014 14:01:44" User="SOURCEEDGE\SunilKumar">Exception 2</Error> 
 
    </Exception> 
 
</Exceptions>

하십시오 시간 솔루션을 우리에게 알려주십시오.

+0

그냥 원하는 게시 대신 스크린 샷의 질문에 XML을 생성하는 경우 그것은 더 나은 것 그 (것)들의 비교의 저쪽에. – juharr

+0

Hay juharr, 제안 해 주셔서 감사합니다. 이제 xml을 직접 게시했습니다. 수정을 제안하십시오. –

답변

0

귀하의 의견에 따라 업데이트되었습니다.

그것의 파일을 열 때 당신이 작가가 XML 문서 및 예외 요소를 시작하도록

if (isFirstTime) 
{ 
    writer.WriteStartDocument(); 
    writer.WriteStartElement("Exceptions"); 
} 

if (isFirstTime) 
{ 
    writer.WriteEndElement(); 
} 

이 코드를 재 배열로에 말 때문에 예외가 조기에 태그를 종료 파일이 닫히기 바로 전에 끝납니다.

빠른 Google은 현재 가지고있는 Format에 대한 재정의 대신에 Header and Footer에 대한 우선 적용을 각각 제안해야한다고 제안합니다.

이 링크는 당신이 원하는 VB이지만, 수행하는 방법의 아이디어를 제공합니다 :

http://blogs.lessthandot.com/index.php/DesktopDev/MSTech/making-an-xmllayout-for-log4net/

+0

스티브, 들여 쓰기가 내가 찾고있는 것이 아닙니다. 이제 이미지를 제거하고 내가 얻은 것과 찾고있는 것을 두 xml으로 업데이트했습니다. 수정을 제안하십시오. –

+0

편집하여 답변을 편집하십시오. –