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

  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011