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

  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011