log4net.error() not executed in Global.Application_Error() after exception is thrown

Discussion in 'ASP.NET / ASP.NET Core' started by gogowater, Feb 18, 2010.

  1. Hi I code log4net in Application_Error() event in Global.asax to mail the exception message via SMTP. It works in my local PC (as always) but not working at the Win2008 IIS7 host. Not only I don't see the email, the exception doesn't even output to the text file but the INFO has output correctly. I suspect after the exception has thrown, the IIS kill the worker process and it never reach to the Application_Error() event.

    I ran out of clue and hope anyone can point me to the right direction.

    web.config setting
    ------------------
    <configuration>
    <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" requirePermission="false"></section>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
    </sectionGroup>
    </sectionGroup>
    </configSections>
    <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="{Path Here}" />
    <param name="AppendToFile" value="true" />
    <param name="RollingStyle" value="Date" />
    <param name="DatePattern" value="yyyyMMdd" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
    <param name="Header" value="[START]" />
    <param name="Footer" value="[END ]" />
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
    </appender>
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="{Email}" />
    <from value="{Email}" />
    <subject value="Exception" />
    <smtpHost value="127.0.0.1" />
    <bufferSize value="512" />
    <lossy value="true" />
    <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="ERROR"/>
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
    </appender>
    <root>
    <level value="INFO" />
    <appender-ref ref="RollingLogFileAppender" />
    <appender-ref ref="SmtpAppender" />
    </root>
    </log4net>


    Global.asax
    -----------
    private static log4net.ILog _Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    void Application_Start(object sender, EventArgs e)
    {
    log4net.Config.XmlConfigurator.Configure();
    }

    void Application_Error(object sender, EventArgs e)
    {
    Exception ex = Server.GetLastError();

    if (ex is HttpUnhandledException && ex.InnerException != null)
    ex = ex.InnerException;

    _Log.Error(ex);
    }
     
  2. Problem Solved.

    I recompile the project with another machine and magically (hate to say it this way) solved the problem.
     
  3. mjp

    mjp

    Well, a magic solution is better than no solution. ;)
     

Share This Page