2017-07-11 14 views
0

Log4Netを初めて使用しようとしました。Log4Netのxml出力に子ノードを追加

私はlog4netの出力に使用されるようにレイアウトクラスを作成しました:

public class MyXmlLayout : XmlLayoutBase 
{ 
    protected override void FormatXml(XmlWriter writer, LoggingEvent loggingEvent) 
    { 
      writer.WriteStartElement("LogEntry"); 
      writer.WriteAttributeString("id", loggingEvent.ThreadName); 
      writer.WriteStartElement(loggingEvent.MessageObject.ToString()); 
      writer.WriteString(loggingEvent.LoggerName); 
      writer.WriteEndElement(); 
      writer.WriteEndElement(); 
    } 
} 

私は、次のような出力を持つようにしたい:

<LogEntry id=1> 
    <Begin>MethodName</Begin> 
    <ExecutionTimeInSec>3473784</ExecutionTimeInSec> 
    <End>MethodName</End> 
</Logentry> 

しかし、私が得たすべては以下の通りである。

<LogEntry id=1><Begin>MethodName</Begin></LogEntry> 
    <LogEntry id=1><ExecutionTimeInSec>3473784</ExecutionTimeInSec></LogEntry> 
    <LogEntry id=1><End>MethodName</End></LogEntry> 

XmlDocumentを読み込もうとしましたが、理解できる別のプロセスで使用されています現在log4netで使用されています

別のノードを追加する前に特定のIDを持つLogEntryノードが存在するかどうかを確認する方法はありますか?

答えて

0

あなたが望むものがわからない、出力があなたのコードに合っておらず、あなたが出力として望むものがあなたのコードに対応していない。

loggingEvent.MessageObject.ToString()メッセージ、使用を取得するために使用すべきではない:あなたが始めるためにいくつかの改善があります限り、私はあなたがいるかどうかを確認する必要が見ることができるようloggingEvent.RenderedMessage

あなたのコードはあなたの設定で実行するように設定されています。 XmlLayoutBaseの使い方と使い方については、このブログ記事をご覧ください。

log4net-rollingfileappender-with-xml

関連する問題