I expected this to work but it didn't :-( The file is always 0 bytes
and locked.
public class ExclusiveLock10k : FileAppender.ExclusiveLock
{
public override Stream AcquireLock()
{
return new BufferedStream(base.AcquireLock(), 10000);
}
}
--- Ron Grabowski <[EMAIL PROTECTED]> wrote:
> --- Ron Grabowski <[EMAIL PROTECTED]> wrote:
>
> > I think a better starting point would be to write a
> > BufferedRenderedMessageLengthFileAppender (long name!) and put the
> > bufferLength property on that.
>
> This seemed to work too. It buffers writes to a FileAppender in 25k
> chunks.
>
> public class ExclusiveLock25k : FileAppender.LockingModelBase
> {
> // copy the contents of the ExclusiveLock class because
> // its m_stream field is private
>
> public override void OpenFile(string filename, bool append,Encoding
> encoding)
> {
>
> // snip
>
> m_stream = new FileStream(filename, fileOpenMode, FileAccess.Write,
> FileShare.Read, 25000);
> }
> }
>
> <appender name="FileAppender" type="log4net.Appender.FileAppender">
> <file value="25kBufferedLogs.txt" />
> <appendToFile value="false" />
> <layout type="log4net.Layout.PatternLayout" />
> <lockingModel type="Company.Logging.ExclusiveLock25k,
> Company.Logging"
> />
> <immediateFlush value="false" />
> </appender>
>
> I think the default value for a FileStream is 4k.
>