By default the log4net FileAppender takes an exclusive write lock on the
log file. If you have multiple processes that are logging to the same
file then you need to use a different locking model. For example the
MinimalLock model:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

This locking model takes a write lock on the file as each logging event
written and then releases it immediately.

An example configuration is:

<appender name="FileAppender" type="log4net.Appender.FileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <file value="c:\tmp\test-file.txt" />
  <layout type="log4net.Layout.PatternLayout" value="%d [%t] %-5p %c -
%m%n" />
</appender> 

Cheers,
Nicko

> -----Original Message-----
> From: Ramaa Davanagere [mailto:[EMAIL PROTECTED] 
> Sent: 04 November 2005 17:12
> To: 'Log4NET User'
> Subject: RE: What do I need to do to get rid of this error? 
> Please help
> 
>  
> 
> I wish it was that easy!!!!
> 
>  
> 
> I have multiple components (20+) using the same log file for 
> logging messages.  I don't think I can check which of the 
> components is currently locking the files, before writing log 
> messages.
> 
>  
> 
> How do I resolve this?
> 
>  
> 
> -----Original Message-----
> From: Shireesh Thanneru [mailto:[EMAIL PROTECTED]
> Sent: Friday, November 04, 2005 11:55 AM
> To: Log4NET User
> Subject: Re: What do I need to do to get rid of this error? 
> Please help
> 
>  
> 
> You need to make sure that no other process/program is 
> accessing the the file at "C:\Program 
> Files\Mobius\contenuity\LogFiles\vdrconBOLog.txt"
> 
> so that log4net can acquire a lock on that file.
> 
> Ramaa Davanagere <[EMAIL PROTECTED]> wrote:
> 
>        
> 
>        
> 
>       log4net: RollingFileAppender: Searched for existing 
> files in [C:\Program Files\Mobius\contenuity\LogFiles]
> 
>       log4net: RollingFileAppender: curSizeRollBackups starts at [0]
> 
>       log4net: FileAppender: Opening file for writing 
> [C:\Program Files\Mobius\contenuity\LogFiles\vdrconBOLog.txt] 
> append [True]
> 
>       log4net:ERROR [RollingFileAppender] Unable to acquire 
> lock on file C:\Program 
> Files\Mobius\contenuity\LogFiles\vdrconBOLog.txt. The process 
> cannot access the file "C:\Program 
> Files\Mobius\contenuity\LogFiles\vdrconBOLog.txt" because it 
> is being used by another process.
> 
>       log4net:ERROR [RollingFileAppender] OpenFile(C:\Program 
> Files\Mobius\contenuity\LogFiles\vdrconBOLog.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: FileAppender: Opening file for writing 
> [C:\Program Files\Mobius\contenuity\LogFiles\vdrconBOLog.txt] 
> append [True] 
> 
> 

Reply via email to