Pregunta ¿Hay alguna forma de establecer el número máximo de mensajes de error que puede contener un appender de memoria log4net?


Me gustaría agregar un appender de memoria al registrador de raíz para que pueda conectarme a la aplicación y obtener los últimos 10 eventos. Solo quiero conservar los últimos 10. Me preocupa que este appender consuma demasiada memoria. La aplicación está diseñada para ejecutarse 24/7. ¿O hay otra manera?


6
2018-03-10 10:06


origen


Respuestas:


Supongo que es posible que deba crear una clase personalizada de Appender que se derive de MemoryAppender y anula el almacenamiento de salida contando el número de mensajes que se muestran actualmente. Puede almacenar mensajes en una lista, y, en la Append Método, determinar si la lista ya tiene el número máximo de mensajes. Si es así, borra el mensaje más antiguo y agrega el nuevo a la lista.


3
2018-03-10 10:18



Necesitará crear un appender personalizado para almacenar un número limitado de registros. Por ejemplo, el MemoryAppender podría ser subclasificado de la siguiente manera:

public class LimitedMemoryAppender : MemoryAppender
{
    override protected void Append(LoggingEvent loggingEvent) 
    {
        base.Append(loggingEvent);
        if (m_eventsList.Count > 10)
        {
            m_eventsList.RemoveAt(0);
        }
    } 
}

7
2018-03-26 15:02