一.在Webconfig中配置节点
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <appender name="exceptionAppender" type="log4net.Appender.RollingFileAppender"> <file value="log-data/exception-log/"/> <appendToFile value="true"/> <maxSizeRollBackups value="2"/> <maximumFileSize value="2048"/> <rollingStyle value="Date"/> <staticLogFileName value="false"/> <datePattern value="yyyyMMdd".txt""/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/> </layout> </appender> <!--<root> <level value="ALL"/> <appender-ref ref="exceptionAppender"/> </root>--> <logger name="exceptionLogger"> <appender-ref ref="exceptionAppender"/> </logger> </log4net>
二.在Global.asax中初始化
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 log4net.Config.XmlConfigurator.Configure(); }
三.扑捉一般异常需在Global.asax中配置
static readonly log4net.ILog logger = log4net.LogManager.GetLogger("exceptionLogger"); void Application_Error(object sender, EventArgs e) { //在出现未处理的错误时运行的代码 string queryString = string.Empty; for (int i = 0; i < Request.Params.Count; i++) { queryString += Request.Params.Keys[i] + ":" + Request.Params[i].ToString() + "<br>"; } Exception ex = Server.GetLastError(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("/r/n" + ex.Message); sb.Append("/r/n详细错误信息:请求页:" + Request.RawUrl); sb.Append("/r/nSOURCE: " + ex.Source); sb.Append("/r/nStackTrace: " + ex.StackTrace); sb.Append("/r/nFORM: " + Request.Form.ToString()); sb.Append("/r/nQUERYSTRING: " + Request.QueryString.ToString()); sb.Append("/r/n引发当前异常的原因: " + ex.InnerException.Message); sb.Append("/r/n堆栈跟踪: " + ex.TargetSite + "/r/n---------------------------------/r/n"); logger.Error(sb.ToString()); }