Hi I am using "RollingFileAppender" of "incubating-log4net-1.2.9-beta" version in my Product.
I found by default, the appender open the file in "Exclusive lock" mode only, in which the fileStream is opened in Read share mode only. As a result of this log files created by this appender can be opened in notepad, but user cannot delete or rename these files. My scenario is like this: In order to see what is actually happening when a particular operation is done in a product we do like below: For support, we usually say "delete your log files, try this operation again, and send the logs". This cannot be possible in above case as a user cannot delete the above files without stopping the service/process Is there any work around in above version to handle this. Can we override the filestream of "ExclusiveLock" class in order to open in FileStream(fileName ,FileMode.Append, FileAccess.Write, FileShare.ReadWrite); Please let me know this as soon as possible. Thanks Shaily >>> Ron Grabowski <[EMAIL PROTECTED]> 4/6/2007 8:55 AM >>> I meant to suggest adding CreateFileStream to LockingModelBase. ----- Original Message ---- From: Ron Grabowski <[EMAIL PROTECTED]> To: Log4NET User <[email protected]> Sent: Thursday, April 5, 2007 11:21:40 PM Subject: Re: FileAppender ExclusiveLock workaround (Not MinimalLock) Perhaps the FileAppender can be enhanced to allow the underlying FileStream to be opened by an inheritor: // example code only...will not compile because CreateFileStream does not exist in FileAppender public class CustomFileStreamFileAppender : FileAppender { // called from OpenFile method public override FileStream CreateFileStream(string fileName, FileMode fileMode, FileAccess fileAccess, FileShare fileShare) { return new FileStream(fileName ,FileMode.Append, FileAccess.Write, FileShare.ReadWrite); } } ----- Original Message ---- From: Frogg <[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, April 5, 2007 9:25:01 AM Subject: Re: FileAppender ExclusiveLock workaround (Not MinimalLock) Thanks for the suggestion, I tried to add this to my code however it doesnt seem to work, I may be missing some initialization command somewhere.... It will create the log file but it will not input any text into it. Ron Grabowski wrote: > > Have you tried something like this: > > // untested > FileAppender fileAppender = new FileAppender(); > fileAppender.Writer = > new QuietTextWriter( > new StreamWriter( > new > FileStream("logs.txt",FileMode.Append,FileAccess.Write,FileShare.ReadWrite)), > new OnlyOnceErrorHandler()); > > ----- Original Message ---- > From: Frogg <[EMAIL PROTECTED]> > To: [email protected] > Sent: Wednesday, April 4, 2007 4:31:05 PM > Subject: FileAppender ExclusiveLock workaround (Not MinimalLock) > > > Hello, > > We used to use a really old version of log4net (1.2.03) but have since > upgraded to 1.2.10. With the old log4net we created a custom FileAppender > so that different application domains could log to the same file (this was > before the days of MinimalLock). Basically, what we did was to override > the > OpenFile method to open the file stream in share mode, thus allowing many > processes to write to the file at the same time. > > This is how the code looked that worked with the old log4net dll: > > ==================Code c#========================= > protected override void OpenFile(string rawFileName, bool append) > { > lock(this) > { > // Release any current configuration and prepare for new. > Reset(); > > // Make THIS debuggable at least. > LogLog.Debug( > string.Format( > "CustomFileAppender: Opening file for SHARED writing[{0}] > append [{1}] > ",fileName, append ) ); > > // Create the directory if needed > Directory.CreateDirectory((new FileInfo(fileName)).DirectoryName); > > // Open the file to allow reading and writing WHILE OPEN > FileStream fs = new > FileStream(fileName,FileMode.Append,FileAccess.Write,FileShare.ReadWrite); > > // and store for use in the base class > SetQWForFiles(new StreamWriter(fs)); > > // save the name and append settings > base.File = fileName; > base.AppendToFile = append; > > // and write out any header details > WriteHeader(); > } > ==============End Code====================== > > When we upgraded to the 1.2.10 this code no longer worked. I tried using > MinimalLock instead of the above code but that has the unfortunate side > effects of being very slow(Lock, Unlock, Lock, Unlock, etc) and allowing > some other process to maintain an exclusive lock on the file (no matter > how > short of time), someone other than the logger (for example, someone is > viewing the log file, the application is not able to log events because > that > person viewing got a writer lock). > > I would like to be able to redo the code above to work with 1.2.10 but my > attempts thus far have been unsuccessfull, if anyone has any ideas that > may > put me on the right track I would be greatly appreciative. > > Thanks, > -- > View this message in context: > http://www.nabble.com/FileAppender-ExclusiveLock-workaround-%28Not-MinimalLock%29-tf3528119.html#a9845029 > > Sent from the Log4net - Users mailing list archive at Nabble.com. > > > > > > -- View this message in context: http://www.nabble.com/FileAppender-ExclusiveLock-workaround-%28Not-MinimalLock%29-tf3528119.html#a9855384 Sent from the Log4net - Users mailing list archive at Nabble.com.
