65.9K
CodeProject is changing. Read more.
Home

Simplest Implementation of log4net

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (9 votes)

Dec 20, 2012

CPOL
viewsIcon

76493

Simplest implementation of log4net

Introduction

log4net is a powerful logging framework for .NET. However most people go for their own implementation for logging framework to handle logs. I personally feel it's may be due to lack of simple implementation of sample with log4net.dll.

Using the Code

Simplest implementation of log4net:

Step 1: Create a Central Logging Class

public static class Logger
{
    private static log4net.ILog Log { get; set; }

    static Logger()
    { 
          Log = log4net.LogManager.GetLogger(typeof(Logger));
    }

    public static void Error(object msg)
    {
        Log.Error(msg);
    }

    public static void Error(object msg, Exception ex)
    {
        Log.Error(msg, ex);
    }

    public static void Error(Exception ex)
    {
        Log.Error(ex.Message, ex);
    }

    public static void Info(object msg)
    {
        Log.Info(msg);
    }
}

Step 2: Update the AssemblyInfo.cs File in the Properties folder

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

Step 3: Create a config named log4net.config (as specified in step 2)

<?xml version="1.0" encoding="utf-8" ?>
<configuration> 
    <configSections>
        <section name="log4net" 
               type="log4net.Config.Log4NetConfigurationSectionHandler,
         log4net" />
    </configSections>

    <log4net>  
        <appender name="LogFileAppender" 
                        type="log4net.Appender.RollingFileAppender" >
            <param name="File" value="C:\Temp\Log\log.txt" />
            <param name="AppendToFile" value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="2" />
            <maximumFileSize value="10MB" />
            <staticLogFileName value="true" />
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <layout type="log4net.Layout.PatternLayout">
                  <param name="ConversionPattern" 
                       value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
                  <conversionPattern
                       value="%newline%newline%date %newline%logger 
                       [%property{NDC}] %newline>> %message%newline" />
            </layout>
        </appender>

        <root>
            <level value="ALL" /> 
            <appender-ref ref="LogFileAppender" />                     
        </root>
    </log4net> 
</configuration>

In this config file, have one appender only. Refer to Apache site for more config file samples.

Step 4: Done!!!!!

Step 5: Using it

Since all the logging methods exposed by Logger class are a static, we simply call them to do the logging, like:

try 
{ 
    return 5/0;
} 
catch (Exception ex)
{ 
    Logger.Error(ex);
}

Happy coding!!!