numaralı arabelleği programlanabilir şekilde yıkamak için lognet ağını AdoNetAppender ile kullanıyorum. AdoNetAppender'ın bir Flush method sahip olduğu görülüyor. Zaten benim kodumdan onu arayabilir miyim?Programlanabilir bir şekilde log4net
Veritabanı günlüğündeki tüm girdileri görüntülemek için bir yönetici sayfası oluşturmaya çalışıyorum ve log4net'i bufferSize = 100 (veya daha fazla) ile kurmak istiyorum, sonra yöneticinin bir log4net'in tamponlu günlük girişlerini veritabanına yazmasını (log4net'i kapatmadan) yönetmek için yönetici sayfasındaki düğme.
Bu mümkün mü?
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();
}
}
}
}
Düzenleme: Eğer kutunun dışında log4net kullandığınız varsayarak
Bence bu log4net.LogManager.GetRepository(). GetAppenders(); Hangi ekleyicilere bağlı olduklarına bakmaksızın tüm ekleri alacaksınız ... –
@Stefan: Well spotted. Cevabımı güncelledim. Teşekkürler. – Alconja
ILoggerRepository repository = LogManager.GetRepository(); IEnumerable appenders = repository.GetAppenders() .OfType (); foreach (eklerde var olan ek) appender.Flush(); –