App.config <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="ALL" /> <appender-ref ref="RollingFileAppender" /> </root> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Log//LogFile.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="30" /> <maximumFileSize value="2MB" /> <staticLogFileName value="true" /> <datePattern value="yyyy-MM-dd HH:mm:ss" /> <staticLogFileName value="true" /> <countDirection value="1" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %-5level-%m%n%n"/> </layout> </appender> </log4net></configuration> Logger.cs using System; using System.IO; namespace Util { public enum LogLevel { Info = 0, Debug, Warn, Error, Fatal } public class Logger { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public static void WriteLog(LogLevel level, object message) { log4net.Config.XmlConfigurator.Configure(); switch (level) { case LogLevel.Info: log.Info(message); break; case LogLevel.Debug: log.Debug(message); break; case LogLevel.Warn: log.Warn(message); break; case LogLevel.Error: log.Error(message); break; case LogLevel.Fatal: log.Fatal(message); break; default: log.Fatal(message); break; } } public static void WriteLog(LogLevel level, object message, Exception exception) { log4net.Config.XmlConfigurator.Configure(); switch (level) { case LogLevel.Info: log.Info(message, exception); break; case LogLevel.Debug: log.Debug(message, exception); break; case LogLevel.Warn: log.Warn(message, exception); break; case LogLevel.Error: log.Error(message, exception); break; case LogLevel.Fatal: log.Fatal(message, exception); break; default: log.Fatal(message, exception); break; } } } }