Log4net使用
0、安装log4net
nuget方式安装
Install-Package log4net
1、Web.config配置
该config配置可以放在web.config文件中,也可以单独拎出来一个配置文件。只需要在第2步中加载对应的就可以了。
首先引入log4net.dll程序集,log4net分debug版release版本。
在configSections节点中加入:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
configSections节点一定要放在Web.config最上面
加入节点log4net节点,如下:
<log4net debug="false">
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="ServiceLogger">
<level value="ALL" />
<appender-ref ref="SysAppender" />
</logger>
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="log/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value=""log_"yyyyMMdd".txt"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="[%d] %-5p - %m%n" />
<param name="Header" value="
------------------------------------------------------------------------
" />
<param name="Footer" value="
------------------------------------------------------------------------
" />
</layout>
</appender>
</log4net>
2、加载log4net的config配置
如果是单独的配置文件,要指定文件路径。
log4net.Config.XmlConfigurator.Configure(new FileInfo(@"\config.log4net"));
有2种方式:
1)在Application_Start事件中加入
log4net.Config.XmlConfigurator.Configure()
2)在AssemblyInfo.cs文件中配置
//加载log4配置 [assembly: log4net.Config.XmlConfigurator()]
3、MVC项目
1)MVC新建错误类
要继承自HandleErrorAttribute类, 重载 OnException方法,加入下面代码,其中error.html为出现错误时要转到的错误页、log.Debug()方法输出错误信息到指定的文件夹下。
using myLog=log4net;
//异常处理记录 myLog.ILog log = myLog.LogManager.GetLogger("WebLogger"); log.Debug(filterContext.Exception); //转到错误提示页 filterContext.HttpContext.Response.Redirect("/error.html");
2)MVC替换掉原来的错误过滤器
在FilterConfig.cs类下注册全局过滤器时,更换为filters.Add(new MyErrorHandleAttribute())。到这里基本的配置就可以了。
3)注册filterconfig
如果在Application_Start中,没有注册过滤器,要注册一下,因为在过滤器中。
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
4、MVC或WebForm项目,都可以在Application_Error事件中进行处理
private readonly log4net.ILog log = log4net.LogManager.GetLogger("ServiceLogger");
//获取最近的一次异常 log.Error(Server.GetLastError().GetBaseException()); //处理完及时清理异常 Server.ClearError(); //Server.Transfer("error.html"); Response.Redirect("Error.html");
5、测试方法
int a=1; int b=0; int c=a/b;