有没有办法设置log4net内存追加器可以包含的最大错误消息数?

时间:2010-03-10 10:06:08

标签: .net logging log4net

我想在根记录器中添加一个内存appender,以便我可以连接到应用程序并获取最后10个事件。我只想保留最后的10.我担心这个appender消耗了太多的内存。该应用程序旨在24/7运行。或者还有另一种方式吗?

2 个答案:

答案 0 :(得分:7)

您需要创建一个自定义appender来存储有限数量的日志。例如,MemoryAppender可以按如下方式进行子类化:

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

答案 1 :(得分:3)

我想,您可能需要创建一个派生自MemoryAppender的自定义Appender类,并通过计算当前显示的消息数来覆盖输出存储。您可以将消息存储在列表中,并在Append方法中确定列表是否已具有最大消息数。如果是,则删除最早的消息并将新消息添加到列表中。