Matthew Lefoster created LOG4NET-551: ----------------------------------------
Summary: LockRecursionException when using File Appenders Key: LOG4NET-551 URL: https://issues.apache.org/jira/browse/LOG4NET-551 Project: Log4net Issue Type: Bug Affects Versions: 2.0.7 Reporter: Matthew Lefoster Priority: Minor I have been getting the following exception on the console: {quote} 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) {quote} I have a number of different appenders, but this only happens when I am using `log4net.Appender.FileAppender`. Using a debugger, I was able to narrow it down to this line (I replaced curly brackets with square brackets because otherwise JIRA interprets them as macros): {quote} Logger.DebugFormat("[1] Executing SQL: [0][2][0]With parameters: [3]", Environment.NewLine, methodName, sql, new ToStringWrapper(parameters)); {quote} My first thought was that ToStringWrapper() was throwing an exception or generating another logging call. But If I put breakpoints at the log call and at the first line of ToStringWrapper.ToString, the exception will show up in the console between those two points. Oddly enough, if I "step into" the logging call instead of just "continuing" and letting the breakpoints handle it, no exception happens. -- This message was sent by Atlassian JIRA (v6.3.15#6346)