How to Log Client Ip, Browser Name and User Name using Log4net in asp.net?

Questions


I want to log Client IP Address, Browser Name and Windows Authenticated User Name using log4net library.

I’m trying in this way, but its not working.

So Please help me out.

Main issue is I don’t know how to add multiple custom properties in log4net.

Please help me.

Server Side Code.

log4net.GlobalContext.Properties["Hostname"] = GetIP();
            log4net.GlobalContext.Properties["Browser"] =  HttpContext.Current.Request.Browser.Type;
            log4net.GlobalContext.Properties["username"] = HttpContext.Current.Request.LogonUserIdentity.Name;

Web.Config Setting:

<conversionPattern value="%date %property{Hostname, username, Browser} [%thread]&#xD;&#xA;          %-5level %logger - %message%newline"
                                           />

If any other setting is required, Please let me know.

Or is there any other way to do this, Please let me know.

 

 

————————————————-

Answer

To give you a more ‘elegant’ solution for this: use ndc.

<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />

using Nested diagnostic context in code (NDC):

using(log4net.NDC.Push("["+GetIP() + " - " + HttpContext.Current.Request.Browser.Type + " - " + HttpContext.Current.Request.LogonUserIdentity.Name+"]")
{
    //your code
    //all log messages will contain the ndc string with the using.
}

asp.net,c++,log4net,web-config

Leave a Reply

Your email address will not be published. Required fields are marked *