2013-01-21 31 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 से लौटे संदेश, नहीं पूरे पैटर्न है सिर्फ। मैंने WriteRenderedMessage का उपयोग StringWriter के साथ करने का भी प्रयास किया है और परिणाम वही था। क्या पैटर्न के साथ संदेश प्राप्त करने का कोई तरीका है?

उत्तर

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 का उपयोग करें, इस तरह आप 'लेखक। राइट (पर्यावरण। न्यूलाइन) से बच सकते हैं; और एक और सामान्य कोड है (यदि किसी के पास पहले से% n आपका वर्तमान कोड हर बार 2 लाइनों नीचे जाएगा)। – BornToCode