3
내가 겪고있는 문제는 파일에 XML 태그를 씁니다 만 올바른 형식의 XML 파일이 아니라는 것입니다. 나를 제대로 구조화 된 XML 문서에 추가 할 수있는 방법은Log4Net이 올바르게 구조화 된 XML 문서에 추가 할 수 있습니까?
<LogEntry><Date>12/04/2012 11:16:26</Date><Message>An error message.</Message><StackTrace>..StackTrace omitted..</StackTrace></LogEntry>
<LogEntry><Date>12/04/2012 11:21:27</Date><Message>Another error message.</Message><StackTrace>..StackTrace omitted..</StackTrace></LogEntry>
<LogEntry><Date>12/04/2012 11:21:37</Date><Message>More messages.</Message><StackTrace>..StackTrace omitted..</StackTrace></LogEntry>
거기에 다음과 같이
파일은 바로 채워되고있다?
다음과 같이 이상적이 나타납니다 :
<?xml version="1.0" encoding="utf-8"?>
<Logs>
<LogEntry><Date>12/04/2012 11:16:26</Date><Message>An error message.</Message><StackTrace>..StackTrace omitted..</StackTrace></LogEntry>
<LogEntry><Date>12/04/2012 11:21:27</Date><Message>Another error message.</Message><StackTrace>..StackTrace omitted..</StackTrace></LogEntry>
<LogEntry><Date>12/04/2012 11:21:37</Date><Message>More messages.</Message><StackTrace>..StackTrace omitted..</StackTrace></LogEntry>
</Logs>
내가 사용하는 코드는 다음과 같습니다
public class MyXmlLayout : XmlLayoutBase
{
protected override void FormatXml(XmlWriter writer, LoggingEvent loggingEvent)
{
writer.WriteStartElement("LogEntry");
writer.WriteStartElement("Date");
writer.WriteString(loggingEvent.TimeStamp.ToString(CultureInfo.CurrentCulture));
writer.WriteEndElement();
writer.WriteStartElement("Message");
writer.WriteString(loggingEvent.RenderedMessage);
writer.WriteEndElement();
writer.WriteStartElement("StackTrace");
writer.WriteString(loggingEvent.ExceptionObject.StackTrace);
writer.WriteEndElement();
if (loggingEvent.ExceptionObject.InnerException != null)
{
writer.WriteStartElement("InnerException");
writer.WriteString(loggingEvent.ExceptionObject.InnerException.ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
}
}
이의 구성은 다음과 같습니다
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="Logs/log.xml" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="MyNamespace.MyXmlLayout" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>