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=] 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=]
log4net: DefaultRepositorySelector: Assembly [AAA.BBB.CCC,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=]
Loaded From [Global Assembly Cache]
log4net: DefaultRepositorySelector: Assembly [AAA.BBB.CCC,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=] does
not have a RepositoryAttribute specified.
log4net: DefaultRepositorySelector: Assembly [AAA.BBB.CCC,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=] 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