1. Create a config file calls 'log4net.config', and put it in 'c:\log\'
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!-- START Defining the sections -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1B44E1D426115821" />
<!-- END Defining the sections -->
</configSections>
<log4net>
<appender name="ServerLogFileAppenderInfo" type="log4net.Appender.RollingFileAppender">
<file value="C:\abc\server-info.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<securityContext type="log4net.Util.WindowsSecurityContext">
<credentials value="Process" />
</securityContext>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="WARN" />
</filter>
</appender>
<appender name="ServerLogFileAppenderError" type="log4net.Appender.RollingFileAppender">
<file value="C:\abc\server-error.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<securityContext type="log4net.Util.WindowsSecurityContext">
<credentials value="Process" />
</securityContext>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<appender name="ApplicationLogFileAppenderInfo" type="log4net.Appender.RollingFileAppender">
<file value="C:\abc\application-info.log"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<securityContext type="log4net.Util.WindowsSecurityContext">
<credentials value="Process" />
</securityContext>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="WARN" />
</filter>
</appender>
<appender name="ApplicationLogFileAppenderError" type="log4net.Appender.RollingFileAppender">
<file value="C:\abc\application-error.log"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<securityContext type="log4net.Util.WindowsSecurityContext">
<credentials value="Process" />
</securityContext>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="ServerLogFileAppenderInfo" />
<appender-ref ref="ServerLogFileAppenderError" />
</root>
<logger name="YourNameSpace" additivity="false">
<level value="DEBUG" />
<appender-ref ref="ApplicationLogFileAppenderInfo" />
<appender-ref ref="ApplicationLogFileAppenderError" />
</logger>
</log4net>
<!-- END configuration of log4net -->
</configuration>
2. Create a Class Library Project call 'MyLogging', add a reference for log4net.dll. Add a new Class calls 'Logger.cs'.
public class Logger
{
private const string LOG4NET_CONFIG_FILE = "C:\\log\\log4net.config";
private log4net.ILog logger;
private Logger()
{
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(LOG4NET_CONFIG_FILE));
}
public Logger(string loggerName)
: this()
{
logger = log4net.LogManager.GetLogger(loggerName);
}
public Logger(Type type)
: this()
{
logger = log4net.LogManager.GetLogger(type);
}
#region ILog Members
public void Debug(object message)
{
if (logger.IsDebugEnabled)
logger.Debug(message);
}
public void Debug(object message, Exception ex)
{
if (logger.IsDebugEnabled)
logger.Debug(message, ex);
}
public void Info(object message)
{
if (logger.IsInfoEnabled)
logger.Info(message);
}
public void Info(object message, Exception ex)
{
if (logger.IsInfoEnabled)
logger.Info(message);
}
public void Warn(object message)
{
if (logger.IsWarnEnabled)
logger.Warn(message);
}
public void Warn(object message, Exception ex)
{
if (logger.IsWarnEnabled)
logger.Warn(message, ex);
}
public void Error(object message)
{
if (logger.IsErrorEnabled)
logger.Error(message);
}
public void Error(object message, Exception ex)
{
if (logger.IsErrorEnabled)
logger.Error(message, ex);
}
public void Fatal(object message)
{
if (logger.IsFatalEnabled)
logger.Fatal(message);
}
public void Fatal(object message, Exception ex)
{
if (logger.IsFatalEnabled)
logger.Fatal(message, ex);
}
#endregion
}