log4net サンプル

Global.asax.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using log4net;
using log4net.Config;

namespace Sample
{
    public class Global : System.Web.HttpApplication
    {
        private static readonly ILog _log = LogManager.GetLogger("App");

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

        protected void Application_Error(object sender, EventArgs e)
        {
            Exception lastError = this.Server.GetLastError();
            if (lastError is HttpUnhandledException)
            {
                _log.Fatal("未処理の例外が発生しました。", lastError);
            }
            else
            {
                _log.Error("エラーが発生しました。", lastError);
            }
        }
    }
}

Web.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>
    
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="Error.html"/>
    </system.web>

    <log4net>
        <appender name="ApplicationLog" type="log4net.Appender.RollingFileAppender">
            <file value="Logs/app" />
            <appendToFile value="true" />
            <maxSizeRollBackups value="10" />
            <rollingStyle value="date" />
            <staticLogFileName value="false" />
            <datePattern value='"."yyyy-MM-dd".log"' />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
            </layout>
        </appender>

        <appender name="NHibernateFileLog" type="log4net.Appender.RollingFileAppender">
            <file value="Logs/nhibernate" />
            <appendToFile value="true" />
            <maxSizeRollBackups value="10" />
            <rollingStyle value="date" />
            <staticLogFileName value="false" />
            <datePattern value='"."yyyy-MM-dd".log"' />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
            </layout>
        </appender>

        <appender name="DataLog" type="log4net.Appender.RollingFileAppender">
            <file value="Logs/data" />
            <appendToFile value="true" />
            <maxSizeRollBackups value="10" />
            <rollingStyle value="date" />
            <staticLogFileName value="false" />
            <datePattern value='"."yyyy-MM-dd".log"' />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
            </layout>
        </appender>
        
        <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
        <logger name="App" additivity="false">
            <level value="Error"/>
            <appender-ref ref="ApplicationLog"/>
        </logger>
        <!--<logger name="NHibernate" additivity="false">
            <level value="DEBUG"/>
            <appender-ref ref="NHibernateFileLog"/>
        </logger>
        <logger name="Pushable.Data" additivity="false">
            <level value="DEBUG"/>
            <appender-ref ref="DataLog"/>
        </logger>-->
    </log4net>
</configuration>