2013-01-21 56 views
9

App.config中看起來是這樣的:MemoryAppender PatternLayout不呈現?

<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返回是只是的消息,而不是整個格局。我也嘗試使用WriteRenderedMessageStringWriter,結果是一樣的。有沒有一種方法可以獲得應用了該模式的消息?

回答

13

我發現它:)

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

1.I一直在尋找這種解決方案有一段時間了,願意分享如何(或地方),你設法找到它? 2.我建議你在轉換模式結束時使用%n(換行),這樣你可以避免使用'writer.Write(Environment.NewLine);'並且有一個更通用的代碼(如果有人已經擁有%你現在的代碼每次都會減少2行)。 – BornToCode