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.







Reply via email to