Есть ли способ установить максимальное количество сообщений об ошибках, которые может содержать приложение-накопитель log4net? - PullRequest
6 голосов
/ 10 марта 2010

Я хотел бы добавить модуль добавления памяти к корневому логгеру, чтобы я мог подключиться к приложению и получить последние 10 событий. Я только хочу сохранить последние 10. Я беспокоюсь о том, что этот аппендиат потребляет слишком много памяти. Приложение предназначено для запуска 24/7. Или есть другой способ?

Ответы [ 2 ]

7 голосов
/ 26 марта 2010

Вам потребуется создать пользовательский аппендер для хранения ограниченного количества журналов. Например, MemoryAppender может быть разделено на следующие подклассы:

public class LimitedMemoryAppender : MemoryAppender
{
    override protected void Append(LoggingEvent loggingEvent) 
    {
        base.Append(loggingEvent);
        if (m_eventsList.Count > 10)
        {
            m_eventsList.RemoveAt(0);
        }
    } 
}
3 голосов
/ 10 марта 2010

Полагаю, вам может понадобиться создать пользовательский класс Appender, который наследуется от MemoryAppender и переопределяет хранилище вывода путем подсчета количества отображаемых в данный момент сообщений. Вы можете хранить сообщения в списке и в методе Append определить, есть ли в списке максимальное количество сообщений. Если это так, вы удаляете самое старое сообщение и добавляете новое в список.

...