You could leave the internal logs on for a while to try and capture the error 
again or you could write your own IErrorHandler and send an email when an error 
occurs:

public class EmailOnlyOnceErrorHandler : OnlyOnceErrorHandler
{
    public new void Error(string message, Exception e, ErrorCode errorCode)
    {
        base.Error(message, e, errorCode);
        
        // TODO: send mail
    }
}

Any appender that extends AppenderSkeleton (most of the built-in appenders 
including FileAppender) has an ErrorHandler property that you can set in the 
config file:

 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <errorHandler value="Company.Logging.EmailOnlyOnceErrorHandler, 
Company.Logging" />
  <!-- snip -->
 </appender>

Maybe there are issues with ASP.Net spawning a new AppDomain for the 
application before the old AppDomain has released the exclusive lock on the 
file.

----- Original Message ----
From: Seth Milder <[EMAIL PROTECTED]>
To: log4net-user@logging.apache.org
Sent: Thursday, May 15, 2008 12:34:06 PM
Subject: log4net stops logging for apparently no reason

Hi,

I was very happy with log4net. Kudos to the developers. However, one 
day, it inexplicably and silently stopped logging.  We are using log4net 
for our internal SharePoint applications, in case this makes any difference.

Here are the relevant parts of my web. config (this has changed a bit 
since I've been mucking about with it):

<configuration>
  <configSections>
     ...
     <section name="log4net" 
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" 
requirePermission="false" />
   </configSections>
  ...
  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="C:\Program Files\Common Files\Microsoft 
Shared\web server extensions\12\LOGS\apps.log" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
</log4net>
</configuration>

I turned on internal logging and I get this:

log4net: DefaultRepositorySelector: Assembly [XXX.YYY.ZZZ, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx] using 
repository [log4net-default-repository] and repository type 
[log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: repository 
[log4net-default-repository] already exists, using repository type 
[log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating repository for assembly 
[AAA.BBB.CCC, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=xxxxxxxxxxxxxxxx]
log4net: DefaultRepositorySelector: Assembly [AAA.BBB.CCC, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx] 
Loaded From [Global Assembly Cache]
log4net: DefaultRepositorySelector: Assembly [AAA.BBB.CCC, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx] does 
not have a RepositoryAttribute specified.
log4net: DefaultRepositorySelector: Assembly [AAA.BBB.CCC, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx] using 
repository [log4net-default-repository] and repository type 
[log4net.Repository.Hierarchy.Hierarchy]

Now another server has suffered the same fate and I am getting desperate. Can 
anyone help? I've googled this to no avail. Thanks for any available guidance!

Best,

Seth Milder


-- 
Seth Milder
AIM: sdmilder
Have something to hide? http://securepastebin.com

Reply via email to