SORU
12 Ocak 2010, Salı


Programmably log4net içinde arabelleği temizleme için zaten var

AdoNetAppender ile log4net kullanıyorum. Bu AdoNetAppender Flush method etmiş gibi görünüyor. Benim kod bu ara ben de bir şeyler var mı?

Deniyorum oluşturmak için bir yönetici sayfasını görüntülemek için tüm girişleri veritabanı günlük ve ben gibi Kur log4net ile bufferSize=100 (veya daha fazla), o zaman istiyorum yönetici olmak için tıklatın düğmesi üzerinde yönetici sayfasında zorlamak log4net yazmak için tamponlu günlük girdileri için veritabanı (olmadan kapatma log4net).

Bu mümkün mü?

CEVAP
12 Ocak 2010, Salı


Kutudan log4net kullanarak iseniz, yolunuzu dig & böyle appender yıkayın

public void FlushBuffers()
{
    ILog log = LogManager.GetLogger("whatever");
    var logger = log.Logger as Logger;
    if (logger != null)
    {
        foreach (IAppender appender in logger.Appenders)
        {
            var buffered = appender as BufferingAppenderSkeleton;
            if (buffered != null)
            {
                buffered.Flush();
            }
        }
    }
}

Edit: Yazdığım yukarıdaki varsayımı altında istediğin için gömme appenders için belirli bir ILog (muhtemelen kötü bir varsayım şimdi ben yeniden okumak soru), ama Stefan çıkış noktalarını aşağıdaki Yorum Yapabilirsiniz basitleştirmek kodu biraz istiyorsanız, floş tüm appenders genelinde tüm depo olarak şöyle:

public void FlushBuffers()
{
    ILoggerRepository rep = LogManager.GetRepository();
    foreach (IAppender appender in rep.GetAppenders())
    {
        var buffered = appender as BufferingAppenderSkeleton;
        if (buffered != null)
        {
            buffered.Flush();
        }
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Nesson

    Charles Ness

    27 NİSAN 2006
  • How to Cook ?

    How to Cook

    31 Ocak 2007
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010