log4net 简单配置

第一步,配置web.config

 

<?xml version="1.0" encoding="utf-8"?>

<!--

  For more information on how to configure your ASP.NET application, please visit

  https://go.microsoft.com/fwlink/?LinkId=301880

  -->

<configuration>

  <configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

  

  

  </configSections>

 

 

 

<log4net debug="false">

    <appender name="ErrorLogFileAppender" type="log4net.Appender.FileAppender">

      <param name="File" value="App_Data/ErrorLog/YoyoMobileWeb_ErrorLog.log" />

      <param name="datePattern" value="yyyy-MM-dd HH:mm" />

      <param name="AppendToFile" value="true" />

      <layout type="log4net.Layout.PatternLayout">

        <param name="ConversionPattern" value="-----------------------------Error-----------------------------%newline%d %-5p%n %c%n %m%n" />

      </layout>

      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

      <filter type="log4net.Filter.LevelRangeFilter">

        <param name="LevelMin" value="ERROR" />

        <param name="LevelMax" value="ERROR" />

      </filter>

    </appender>

    <appender name="WarnLogFileAppender" type="log4net.Appender.FileAppender">

      <param name="File" value="App_Data/ErrorLog/YoyoMobileWeb_WarnLog.log" />

      <param name="datePattern" value="yyyy-MM-dd HH:mm" />

      <param name="AppendToFile" value="true" />

      <layout type="log4net.Layout.PatternLayout">

        <param name="ConversionPattern" value="-----------------------------%p-----------------------------%newline%d %-5p%n %c%n %m%n" />

      </layout>

      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

      <filter type="log4net.Filter.LevelRangeFilter">

        <param name="LevelMin" value="WARN" />

        <param name="LevelMax" value="WARN" />

      </filter>

    </appender>

    <appender name="InfoLogFileAppender" type="log4net.Appender.FileAppender">

      <param name="File" value="App_Data/ErrorLog/YoyoMobileWeb_InfoLog.log" />

      <param name="datePattern" value="yyyy-MM-dd HH:mm" />

      <param name="AppendToFile" value="true" />

      <layout type="log4net.Layout.PatternLayout">

        <param name="ConversionPattern" value="-----------------------------%p-----------------------------%newline%d %-5p%n %c%n %m%n" />

      </layout>

      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

      <filter type="log4net.Filter.LevelRangeFilter">

        <param name="LevelMin" value="INFO" />

        <param name="LevelMax" value="INFO" />

      </filter>

    </appender>

    <root>

      <level value="ALL" />

      <appender-ref ref="ErrorLogFileAppender" />

      <appender-ref ref="WarnLogFileAppender" />

      <appender-ref ref="InfoLogFileAppender" />

    </root>

  </log4net>

 

第二步 Global.aspx.cs配置

 

private static readonly ILog _logger = LogManager.GetLogger(typeof(MvcApplication));

 

        protected void Application_Start()

        {

     

            log4net.Config.XmlConfigurator.Configure();

  }

 

 

 

  protected void Application_Error(object sender, EventArgs e) {

            bool enableErrorLog;

            string form = string.Empty;

            enableErrorLog = true;

            try {

                NameValueCollection coll = Request.Form;

                foreach (string key in coll.AllKeys) {

                    if (key == "__VIEWSTATE"

                        || key == "__EVENTVALIDATION"

                        || key == "__EVENTTARGET"

                        || key == "__EVENTARGUMENT"

                        || string.IsNullOrEmpty(coll[key])) {

                        continue;

                    }

                    form += "\r\n" + key + ":" + coll[key] + ";";

                }

            } catch {

                // ignored

            }

            if (enableErrorLog) {

                string msg;

                string time = Server.UrlEncode(DateTime.Now.ToString(CultureInfo.InvariantCulture));

                Exception ex = Server.GetLastError();

                if (ex != null) {

                    if (ex is HttpException) {

                        switch ((ex as HttpException).GetHttpCode()) {

                            case 403:

                            case 404:

                                return;

                        }

                    }

                    Server.ClearError();

                    msg = Server.UrlEncode(ex.Message);

                    //if (ex is HttpUnhandledException) {

                    //只要是sql的错误,都用“数据连接错误”来显示给用户

                    if (ex.InnerException is System.Data.SqlClient.SqlException) {

                        msg = "数据连接错误!";

                    }

                    //}

                    StringBuilder sb = new StringBuilder();

                    sb.Append("发生错误的页面为: ");

                    sb.Append(Request.Url.PathAndQuery);

                    sb.Append("\r\n");

                    sb.Append(" 上一个页面为:");

                    sb.Append(Request.UrlReferrer);

                    sb.Append("\r\n");

                    sb.Append(" 提交的Form数据:");

                    sb.Append(form);

                    sb.Append("\r\n");

                    sb.Append(string.Format(" 客户端信息:IP为{0},UserAgent信息为{1},浏览器信息为:{2}", new object[] { Request.UserHostAddress, Request.UserAgent, Request.Browser.Browser }));

                    sb.Append("\r");

                    string errorMessage = sb.ToString();

                    _logger.Error(errorMessage, ex);

                    if (ex is HttpRequestValidationException) {

                        Context.Response.Write("您的输入不合法!");

                    } else {

                        if (Context.Request.Url.AbsoluteUri.Contains("ashx") || Context.Request.Url.AbsoluteUri.Contains("ajax.aspx")) {

                            Context.Response.Clear();

                            Context.Response.StatusCode = 500;

                            Context.Response.Status = "500 Server Internal Error.";

                            Context.Response.Write("Ajax请求错误!");

                            Context.Response.End();

                        } else {

                            //Context.Response.Redirect(@"~/error.aspx");

                        }

                    }

                }

            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值