using System; using System.Web; using log4net;
// Load the configuration from the 'HttpFilterLogs.dll.log4net' file [assembly: log4net.Config.DOMConfigurator(ConfigFileExtension="log4net", Watch=true)]
/// <summary> /// Class héritant de IHttpModule et implémentant le /// systéme de log de visites /// </summary> public class HttpFilterLogs : IHttpModule { //Objet permettant d'écrire dans les logs private static readonly ILog log = LogManager.GetLogger(typeof(HttpFilterLogs)); //Mémorisation de l'application appelant le module private HttpApplication httpApp; public void Init(System.Web.HttpApplication context) { } public void Dispose() { } }
public void Init(System.Web.HttpApplication context) { this.httpApp = context; this.httpApp.BeginRequest += new EventHandler(OnBeginRequest); } void OnBeginRequest(object sender, EventArgs a) { }
using log4net.ObjectRenderer;
public class ClientInformations : DefaultRenderer { System.Web.HttpRequest Request; public ClientInformations(System.Web.HttpRequest request) { this.Request = request; } public override string ToString() { string UrlReferer = Request.UrlReferrer.AbsoluteUri; string Ip = Request.UserHostAddress.Trim(); string Browser = Request.Browser.Browser + Request.Browser.MajorVersion + "." + Request.Browser.MinorVersion; string RequestedUrl = Request.Url.ToString(); return Ip + " " + Browser + " " + RequestedUrl + " " + UrlReferer; } }
void OnBeginRequest(object sender, EventArgs a) { if (log.IsInfoEnabled) { log.Info( new ClientInformations(httpApp.Request) ); } }
<?xml version="1.0" encoding="utf-8" ?> <!-- This section contains the log4net configuration settings --> <log4net> <!-- Define some output appenders --> <appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <param name="File" value="Visits-log.txt" /> <param name="AppendToFile" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> <!-- Setup the root category, add the appenders and set the default level --> <root> <level value="DEBUG" /> <appender-ref ref="LogFileAppender" /> </root> </log4net>
<system.web> <httpModules> <add name="HttpFilterLogs" type="HttpFilterLogs, HttpFilterLogs" /> </httpModules> </system.web>