[ https://issues.apache.org/jira/browse/LOG4NET-103?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stefan Bodewig updated LOG4NET-103: ----------------------------------- Fix Version/s: 1.2 Maintenance Release > RollingFileAppenders that log to a network share from a web application fail > to resume logging in the event the network share is > disconnected/reconnected/failsover > ------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: LOG4NET-103 > URL: https://issues.apache.org/jira/browse/LOG4NET-103 > Project: Log4net > Issue Type: Bug > Components: Appenders > Affects Versions: 1.2.9, 1.2.10 > Environment: Windows 2003, ASP.NET, C# > Reporter: Kenneth Oberleitner > Fix For: 1.2 Maintenance Release > > > We have seen an issue when logging from our web applications to a clustered > SAN which fails over to a backup. I have recreated the scenario locally with > two machines and writing a log file to a network share. > 1) Enabled internal logging in log4net to a local file on MACHINE-C > 2) Set up a share on MACHINE-B, and started a web application logging to that > share from MACHINE-C; logs appeared on the share as expected > 3) Disabled the share on MACHINE-B, refreshed the web application, the > following error was reported in log4net's internal debugging > log4net:ERROR [RollingFileAppender] Failed in DoAppend > System.IO.IOException: The handle is invalid. > at System.IO.__Error.WinIOError(Int32 errorCode, String str) > at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 > count) > at System.IO.FileStream.FlushWrite() > at System.IO.FileStream.Flush() > at log4net.Appender.LockingStream.Flush() > at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) > at System.IO.StreamWriter.Flush() > at log4net.Util.TextWriterAdapter.Flush() > at log4net.Appender.FileAppender.Append(LoggingEvent loggingEvent) > at log4net.Appender.RollingFileAppender.Append(LoggingEvent loggingEvent) > at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent) > 4) Re-enabled the share on MACHINE-B, refreshed the web application; no > logging appeared in the shared log file, and the following error appeared in > log4nets internal debugging > log4net:ERROR [RollingFileAppender] Failed in DoAppend > System.ObjectDisposedException: Cannot access a closed file. > at System.IO.__Error.FileNotOpen() > at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count) > at log4net.Appender.LockingStream.Write(Byte[] buffer, Int32 offset, Int32 > count) > at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) > at System.IO.StreamWriter.Flush() > at log4net.Util.TextWriterAdapter.Flush() > at log4net.Appender.FileAppender.Append(LoggingEvent loggingEvent) > at log4net.Appender.RollingFileAppender.Append(LoggingEvent loggingEvent) > at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent) > 5) Touched web.config, refreshed the web application; no logging appeared in > the shared log file, and the following errors appeared in log4net's internal > debugging > log4net: Hierarchy: Shutdown called on Hierarchy [log4net-default-repository] > log4net:ERROR [RollingFileAppender] Could not close writer > [log4net.Util.CountingQuietTextWriter] > System.ObjectDisposedException: Cannot access a closed file. > at System.IO.__Error.FileNotOpen() > at System.IO.FileStream.Flush() > at log4net.Appender.LockingStream.Flush() > at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) > at System.IO.StreamWriter.Dispose(Boolean disposing) > at System.IO.StreamWriter.Close() > at log4net.Util.TextWriterAdapter.Close() > at log4net.Util.QuietTextWriter.Close() > at log4net.Appender.TextWriterAppender.CloseWriter() > ... > log4net:ERROR [RollingFileAppender] Unable to acquire lock on file > \\MACHINE-B\Log\log-file.txt. The process cannot access the file > "\\MACHINE-B\Log\log-file.txt" because it is being used by another process. > log4net:ERROR [RollingFileAppender] > OpenFile(\\MACHINE-B\Log\log-file.txt,True) call failed. > LockStateException: The file is not currently locked > at log4net.Appender.LockingStream.AssertLocked() > at log4net.Appender.LockingStream.get_CanWrite() > at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding, Int32 > bufferSize) > at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding) > at log4net.Appender.FileAppender.OpenFile(String fileName, Boolean append) > at log4net.Appender.RollingFileAppender.OpenFile(String fileName, Boolean > append) > at log4net.Appender.FileAppender.SafeOpenFile(String fileName, Boolean > append) > ... > log4net:ERROR [RollingFileAppender] Unable to acquire lock on file > \\MACHINE-B\Log\log-file.txt. The process cannot access the file > "\\MACHINE-B\Log\log-file.txt" because it is being used by another process. > log4net:ERROR [RollingFileAppender] > OpenFile(\\MACHINE-B\Log\log-file.txt,True) call failed. > LockStateException: The file is not currently locked > at log4net.Appender.LockingStream.AssertLocked() > at log4net.Appender.LockingStream.get_CanWrite() > at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding, Int32 > bufferSize) > at System.IO.StreamWriter..ctor(Stream stream, Encoding encoding) > at log4net.Appender.FileAppender.OpenFile(String fileName, Boolean append) > at log4net.Appender.RollingFileAppender.OpenFile(String fileName, Boolean > append) > at log4net.Appender.FileAppender.SafeOpenFile(String fileName, Boolean > append) > log4net:ERROR [RollingFileAppender] No output stream or file set for the > appender named [AppRollingFileAppender]. > 6) Performed an iisreset; logging then appeared in the shared log and no > errors in the log4net internal debugging -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira