Log4Net MemoryAppender scheint Hochgeschwindigkeitsprotokollereignisse zu verpassen

Ich verwende einen log4net MemoryAppender, um meine log4net-Ausgabe in einem Formulartextfeld anzuzeigen. Der relevante Teil meiner Konfigurationsdatei ist:

<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender" >
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %date %message%newline" />
    </layout>
</appender>

Der Code, der das Formular aktualisiert, wird von einem Zeitgeber ausgelöst und sieht folgendermaßen aus:

var events = _memoryAppender.GetEvents();

foreach (var loggingEvent in events)
{
    textBoxOutput.Text += loggingEvent.Level + "  " + loggingEvent.MessageObject + Environment.NewLine;
}
_memoryAppender.Clear();

Es funktioniert, aber wenn meine Anwendung in kurzer Zeit viele Nachrichten protokolliert, sehe ich sie anscheinend nicht. Hat jemand eine Idee was los ist?

Als Workaround verwende ichKettensäge und ein UDP-Appender:

   <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="ERROR"/>
    </filter>
    <param name="RemoteAddress" value="127.0.0.1" />
    <param name="RemotePort" value="8080" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j, log4net" />
</appender>

Ich mag meine eigene Benutzeroberfläche jedoch besser, daher suche ich immer noch nach Antworten.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage