2015-08-21 18 views
5

bu modda izin verilmeyen okuyun:Log4Net Rekürsif kilit satın almalar böyle görünen bir özel log4net appender var

log4net:ERROR Exception while logging 
System.Threading.LockRecursionException: Recursive read lock acquisitions not allowed in this mode. 
    at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(TimeoutTracker timeout) 
    at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeoutTracker timeout) 
    at System.Threading.ReaderWriterLockSlim.EnterReadLock() 
    at log4net.Util.ReaderWriterLock.AcquireReaderLock() 
    at log4net.Repository.Hierarchy.Logger.CallAppenders(LoggingEvent loggingEvent) 
    at log4net.Repository.Hierarchy.Logger.ForcedLog(Type callerStackBoundaryDeclaringType, Level level, Object message, Exception exception) 
    at log4net.Repository.Hierarchy.Logger.Log(Type callerStackBoundaryDeclaringType, Level level, Object message, Exception exception) 
: Arada

public class MyAppender : AppenderSkeleton 
{ 
    protected override void Append(LoggingEvent loggingEvent) 
    { 
     try 
     { 
      if (loggingEvent.Level == Level.Error || loggingEvent.Level == Level.Fatal) 
      { 
       DoWork(RenderLoggingEvent(loggingEvent)); 
      } 
     } 
     catch 
     { 
      // silently fail 
     } 
    } 
} 

, ben çıktıda bu durum göreceksiniz

Appender iyi çalışıyor gibi görünüyor ve benim app herhangi bir hata göstermiyor ama bu mesajlar sooo can sıkıcı. Temiz çalışan yazılımları seviyorum ve bu temiz değil = (

Uygulamacı uygulamam tamam mı? Bu hatayı önlemek için ekleyebileceğim bazı yapılandırmalar var mı? Gooog'lardan bulabildiğim en yakın cevap log4net bug hata raporundan geliyor. GetAppender'ları aramamayayım, bu yüzden benim kullanım durumum için geçerli değil.Tüm yardımlar değerlendirilecekti

+1

DoWork' ne yapar? – Rob

+0

@Rob, hatayı bir servis otobüsüne gönderir – Drew

+0

Hiç başarısız mı? (Benim şu an yaptığım şey, "DoWork" un kendisi bir şeyleri kaydedebilir) – Rob

cevap