Я использую log4net для регистрации.Я пытаюсь войти в формате XML.Я также пытаюсь регистрировать настраиваемые поля.
Я расширил класс XmlLayoutBase, а в FormatXml (writer, loggingEvent) я могу написать собственные поля.Но вот проблема: он не создает правильно сформированный xml-файл. Он не добавляется в указанный узел (не могу сделать это с помощью XmlTextWriter)
Что я сделал до сих пор: я расширил RollingFileAppender и переопределил виртуальную функцию OpenFileЯ могу добавить необходимые родительские узлы сейчас, но регистрация добавляется в конце и не может найти способ добавить их под конкретным родительским узлом в xml
public class CustomRollingFileAppender:RollingFileAppender
{
protected override void OpenFile(string fileName, bool append)
{
bool needToWrite = System.IO.File.Exists(fileName);
base.OpenFile(fileName, append);
lock (this)
{
if (needToWrite == false)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName))
{
file.WriteLine(<System >);
file.WriteLine(<LogParent >);
file.WriteLine(</LogParent>);
file.WriteLine(</System>);
}
}
}
}
}
, используя приведенный выше фрагмент, который я могу добавитьзаголовок и другая необходимая информация в моем XML-файле.Теперь мой xml выглядит следующим образом
<System CreationDate='4/18/2011 6:30:41 PM'>
<ParentLog TimeStamp='2010-07-01T11:01:58'>
// logs should appear here as children of <ParentLog>
</ParentLog>
</System>
Далее я расширил XmlLayoutBase, как показано ниже
public class CustomXMLLayout: XmlLayoutBase
{
protected override void FormatXml(System.Xml.XmlWriter writer,log4net.Core.LoggingEvent loggingEvent)
{
System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(@"example.xml");
writer.WriteStartElement("Log");
writer.WriteAttributeString("TimeStamp", DateTime.Now.ToString());
writer.WriteEndElement();
}
}
// записи написаны правильно (извините за запись), но в конце очевиднопричина.Мои вопросы: есть ли способ прикрепить xsd вдоль log4net, чтобы сообщить ему, где делать записи в журнале или, альтернативно, каким-либо образом назначить xsd XMLWriter?Я не смогу использовать xmldocument
Любая помощь приветствуется.
С уважением, sumit