.NET日志记录框架Log4Net使用总结
做项目,记录日志是免不了的。在开发过程中还可以调试,但是在项目发布之后,不可能长期这么做,日志则能够在最快的时间内发现问题。最近,在好几个项目中使用了Log4net,感觉确实给我省了不少力,总结一下使用吧,同时也留作以后备用。
1 使用Nuget安装Log4Net:Install-Package log4net
2 创建LogHelper.cs
- usingSystem;
- namespaceUCsoft.Web.Common
- {
- ///<summary>
- ///Log4Net日志封装类2014-08-2814:58:50By唐有炜
- ///</summary>
- publicclassLogHelper
- {
- ///<summary>
- ///信息标志
- ///</summary>
- PRivatestaticreadonlylog4net.ILogloginfo=log4net.LogManager.GetLogger("loginfo");
- ///<summary>
- ///错误标志
- ///</summary>
- privatestaticreadonlylog4net.ILoglogerror=log4net.LogManager.GetLogger("logerror");
- ///<summary>
- ///调试标志
- ///</summary>
- privatestaticreadonlylog4net.ILoglogdebug=log4net.LogManager.GetLogger("logdebug");
- ///<summary>
- ///Log4Net信息记录封装2014-08-2814:58:50By唐有炜
- ///</summary>
- ///<paramname="message"></param>
- ///<returns></returns>
- publicstaticvoidInfo(stringmessage)
- {
- if(loginfo.IsInfoEnabled)
- {
- loginfo.Info(message);
- }
- }
- ///<summary>
- ///Log4Net错误记录封装2014-08-2814:58:50By唐有炜
- ///</summary>
- ///<paramname="message"></param>
- ///<returns></returns>
- publicstaticvoidError(stringmessage)
- {
- if(logerror.IsErrorEnabled)
- {
- logerror.Error(message);
- }
- }
- ///<summary>
- ///Log4Net错误记录封装2014-08-2814:58:50By唐有炜
- ///</summary>
- ///<paramname="message"></param>
- ///<paramname="ex"></param>
- ///<returns></returns>
- publicstaticvoidError(stringmessage,Exceptionex)
- {
- if(logerror.IsErrorEnabled)
- {
- if(!string.IsNullOrEmpty(message)&&ex==null)
- {
- logerror.ErrorFormat("<br/>【附加信息】:{0}<br>",newobject[]{message});
- }
- elseif(!string.IsNullOrEmpty(message)&&ex!=null)
- {
- stringerrorMsg=BeautyErrorMsg(ex);
- logerror.ErrorFormat("<br/>【附加信息】:{0}<br>{1}",newobject[]{message,errorMsg});
- }
- elseif(string.IsNullOrEmpty(message)&&ex!=null)
- {
- stringerrorMsg=BeautyErrorMsg(ex);
- logerror.Error(errorMsg);
- }
- }
- }
- ///<summary>
- ///Log4Net调试记录封装2014-08-2814:58:50By唐有炜
- ///</summary>
- ///<paramname="message"></param>
- ///<returns></returns>
- publicstaticvoidDebug(stringmessage)
- {
- if(logdebug.IsErrorEnabled)
- {
- logdebug.Debug(message);
- }
- }
- ///<summary>
- ///Log4Net调试记录封装2014-08-2814:58:50By唐有炜
- ///</summary>
- ///<paramname="message"></param>
- ///<paramname="ex"></param>
- ///<returns></returns>
- publicstaticvoidDebug(stringmessage,Exceptionex)
- {
- if(logdebug.IsDebugEnabled)
- {
- if(!string.IsNullOrEmpty(message)&&ex==null)
- {
- logdebug.DebugFormat("<br/>【附加信息】:{0}<br>",newobject[]{message});
- }
- elseif(!string.IsNullOrEmpty(message)&&ex!=null)
- {
- stringerrorMsg=BeautyErrorMsg(ex);
- logdebug.DebugFormat("<br/>【附加信息】:{0}<br>{1}",newobject[]{message,errorMsg});
- }
- elseif(string.IsNullOrEmpty(message)&&ex!=null)
- {
- stringerrorMsg=BeautyErrorMsg(ex);
- logdebug.Debug(errorMsg);
- }
- }
- }
- ///<summary>
- ///美化错误信息
- ///</summary>
- ///<paramname="ex">异常</param>
- ///<returns>错误信息</returns>
- privatestaticstringBeautyErrorMsg(Exceptionex)
- {
- stringerrorMsg=string.Format("【异常类型】:{0}<br>【异常信息】:{1}<br>【堆栈调用】:{2}",
- newobject[]{ex.GetType().Name,ex.Message,ex.StackTrace});
- errorMsg=errorMsg.Replace("\r\n","<br>");
- errorMsg=errorMsg.Replace("位置","<strongstyle=\"color:red\">位置</strong><br/>");
- returnerrorMsg;
- }
- }
- }
3 在AssemblyInfo里面注册(非常重要)
[assembly: log4net.Config.xmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
4 创建log4net.config
- <log4net>
- <appendername="LogFileAppender"type="log4net.Appender.RollingFileAppender">
- <paramname="File"value="Log\\"/>
- <!--输出到什么目录-->
- <paramname="AppendToFile"value="true"/>
- <!--是否覆写到文件中-->
- <paramname="StaticLogFileName"value="false"/>
- <!--是否使用静态文件名-->
- <paramname="DatePattern"value="yyyyMMdd".html""/>
- <!--日志文件名-->
- <paramname="RollingStyle"value="Date"/>
- <!--最小锁定模型以允许多个进程可以写入同一个文件-->
- <paramname="lockingModel"type="log4net.Appender.FileAppender+MinimalLock"/>
- <layouttype="log4net.Layout.PatternLayout">
- <paramname="ConversionPattern"value="<HRCOLOR=green>%n日志时间:%d[%t]<BR>%n日志级别:%-5p<BR>%n日志标志:%c<BR>%n日志信息:%m<BR>%n<HRSize=1>"/>
- </layout>
- <filtertype="log4net.Filter.LevelRangeFilter">
- <levelMinvalue="DEBUG"/>
- <levelMaxvalue="INFO"/>
- </filter>
- </appender>
- <appendername="ErrorFileAppender"type="log4net.Appender.RollingFileAppender">
- <paramname="File"value="Log\\"/>
- <paramname="AppendToFile"value="true"/>
- <paramname="StaticLogFileName"value="false"/>
- <paramname="DatePattern"value="yyyyMMdd.error".html""/>
- <paramname="RollingStyle"value="Date"/>
- <!--最小锁定模型以允许多个进程可以写入同一个文件-->
- <paramname="lockingModel"type="log4net.Appender.FileAppender+