5
我有一個自定義log4net的Appender的,看起來像這樣:log4net的遞歸讀鎖定收購不允許在此模式下
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
}
}
}
時不時地,我會看到這個異常輸出:
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)
appender似乎工作正常,我的應用程序不顯示任何錯誤,但這些消息太討厭了。我喜歡乾淨的運行軟件,這是不乾淨的=(
是我的appender實施好嗎?有一些配置,我可以包括,以避免這個錯誤?我可以從gooogs找到最接近的答案是從這個錯誤報告log4net bug。我不打電話GetAppenders,所以它不適用於我的使用情況。任何幫助將被appriciated。
'DoWork'做了什麼? – Rob
@Rob,將錯誤發佈到服務總線 – Drew
它是否曾經失敗? (我得到的是'DoWork'本身可能會記錄一些東西) – Rob