2013-01-21 10 views
9

App.configファイルは、次のようになります。MemoryAppender Patternレイアウトがレイアウトされていませんか?

<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level - %message" /> 
    </layout> 
</appender> 

コードは次のようになります。

foreach (var ev in events) 
{ 
    string msg = ev.RenderedMessage; 
} 

文字列がev.RenderedMessageから返さだけメッセージ全体ではなく、パターンです。私はStringWriterWriteRenderedMessageを使ってみましたが、結果は同じでした。パターンが適用されたメッセージを取得する方法はありますか?

答えて

13

私はそれを見つけた:) 1.Iは、いくつかの時間のため、この解決策を探していた

var events = _ma.GetEvents(); 
string result = ""; 
using (StringWriter writer = new StringWriter()) 
{ 
    foreach (var ev in events) 
    { 
     _ma.Layout.Format(writer, ev); 
     writer.Write(Environment.NewLine); 
    } 
    result = writer.ToString(); 
} 
+0

、どのように(あるいはどこ)を共有する気には、あなたはそれを見つけるために管理するのですか? 2.変換パターンの末尾に%nを使用することをお勧めします(新しい行の場合)、 'writer.Write(Environment.NewLine);を避け、あなたの現在のコードは毎回2行下がります)。 – BornToCode

関連する問題