You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by "Warrick Flower (DSL AK)" <Wa...@datacom.co.nz> on 2004/11/22 22:05:42 UTC

RollingFileAppender in IIS-hosted application

Hi,

 

After doing a build of log4net from the CVS source we had difficulty
with the RollingFileAppender failing to log after a rollover.  The
problem was occurring in a IIS-hosted web app, but we hadn't had any
trouble with the 1.2 release of log4net.

 

After turning on internal debugging, I tracked the problem down to
relative file names.  At application startup, the following was put in
the internal log:

 

log4net: XmlConfigurator: Loading Appender [MainRollingFileAppender]
type: [log4net.Appender.RollingFileAppender]

log4net: XmlConfigurator: Setting Property [File] to String value
[.\\ServicesLog.txt]

log4net: XmlConfigurator: Setting Property [AppendToFile] to Boolean
value [True]

log4net: XmlConfigurator: Setting Property [RollingStyle] to RollingMode
value [Size]

log4net: XmlConfigurator: Setting Property [MaxSizeRollBackups] to Int32
value [5]

log4net: XmlConfigurator: Setting Property [MaximumFileSize] to String
value [2MB]

...

log4net: RollingFileAppender: Searched for existing files in
[c:\windows\system32\inetsrv]

log4net: RollingFileAppender: curSizeRollBackups starts at [0]

log4net: FileAppender: Opening file for writing
[C:\Inetpub\wwwroot\Christmas.ServiceHost_andrewha\ServicesLog.txt]
append [True]

 

When it came to rollover, the following was logged:

 

log4net: RollingFileAppender: rolling over count [2098121]

log4net: RollingFileAppender: maxSizeRollBackups [5]

log4net: RollingFileAppender: curSizeRollBackups [0]

log4net: RollingFileAppender: countDirection [-1]

log4net: RollingFileAppender: Deleted file
[C:\Inetpub\wwwroot\Christmas.ServiceHost_andrewha\ServicesLog.txt.1]

log4net: RollingFileAppender: Moving
[C:\Inetpub\wwwroot\Christmas.ServiceHost_andrewha\ServicesLog.txt] ->
[C:\Inetpub\wwwroot\Christmas.ServiceHost_andrewha\ServicesLog.txt.1]

log4net: FileAppender: Opening file for writing [.\\ServicesLog.txt]
append [False]

log4net:ERROR [RollingFileAppender] OpenFile(.\\ServicesLog.txt,False)
call failed.

System.UnauthorizedAccessException: Access to the path
"c:\windows\system32\inetsrv\ServicesLog.txt" is denied.

   at System.IO.__Error.WinIOError(Int32 errorCode, String str)

   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share, Int32 bufferSize, Boolean useAsync, String
msgPath, Boolean bFromProxy)

   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share)

   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] Failed in DoAppend

 

Changing the line:

 

SafeOpenFile(m_baseFileName, false); 

 

to:

 

SafeOpenFile(ConvertToFullPath(m_baseFileName), false);

 

in the RollingFileAppender RollOverSize() and RollOverTime() methods
seems to have fixed it.  I don't have access to CVS here at work, but if
someone else is having a similar problem this may be of help.

 

Warrick Flower

Technical Consultant
DATACOM SYSTEMS LTD, Auckland 
* Work: +64 9 366 1150 extn 8245 *Mob: +64 21 171 5764

* warrickf@datacom.co.nz