zoukankan      html  css  js  c++  java
  • ASP.NET的错误处理机制之二(实例log4net)

    一、log4net下载:http://logging.apache.org/log4net/download_log4net.cgi

    二、web.config配置如下:

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <configuration>
     3  <configSections>
     4   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
     5  </configSections>
     6  <log4net>
     7   <logger name="logerror">
     8    <level value="ERROR" />
     9    <appender-ref ref="ErrorAppender" />
    10   </logger>
    11   <logger name="loginfo">
    12    <level value="INFO" />
    13    <appender-ref ref="InfoAppender" />
    14   </logger>
    15   <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    16    <param name="File" value="Log\LogError\" />
    17    <param name="AppendToFile" value="true" />
    18    <param name="MaxSizeRollBackups" value="100" />
    19    <param name="MaxFileSize" value="10240" />
    20    <param name="StaticLogFileName" value="false" />
    21    <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
    22    <param name="RollingStyle" value="Date" />
    23    <layout type="log4net.Layout.PatternLayout">
    24     <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p 
    25    &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
    26    </layout>
    27   </appender>
    28   <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
    29    <param name="File" value="Log\LogInfo\" />
    30    <param name="AppendToFile" value="true" />
    31    <param name="MaxFileSize" value="10240" />
    32    <param name="MaxSizeRollBackups" value="100" />
    33    <param name="StaticLogFileName" value="false" />
    34    <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
    35    <param name="RollingStyle" value="Date" />
    36    <layout type="log4net.Layout.PatternLayout">
    37     <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p 
    38    &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
    39    </layout>
    40   </appender>
    41  </log4net>
    42  <system.web>
    43   <compilation defaultLanguage="c#" debug="true" />
    44   <customErrors mode="RemoteOnly" />
    45   <authentication mode="Forms" />
    46   <authorization>
    47    <allow users="*" />
    48   </authorization>
    49   <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
    50   <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
    51    cookieless="false" timeout="20" />
    52   <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
    53  </system.web>
    54 </configuration>

     当打开日志文件的时候会提示被另一个程序占用,解决办法:

    在appender下加<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 

    三、LOG操作类:

     1 <%@ Application Language="C#" %>
     2 <%@ Import Namespace="SystemLog" %>
     3 
     4 <script runat="server">
     5 
     6     void Application_Start(object sender, EventArgs e) 
     7     {
     8         // 在应用程序启动时运行的代码
     9         LogHelper.SetConfig();
    10     }
    11     
    12     void Application_End(object sender, EventArgs e) 
    13     {
    14         //  在应用程序关闭时运行的代码
    15     }
    16         
    17     void Application_Error(object sender, EventArgs e) 
    18     { 
    19         // 在出现未处理的错误时运行的代码
    20         Exception objExp = HttpContext.Current.Server.GetLastError();
    21         LogHelper.WriteLog("客户机IP:" + Request.UserHostAddress + "<br/>错误地址:" + Request.Url + "<br/>异常信息:" + Server.GetLastError().Message, objExp);
    22     }
    23 
    24     void Session_Start(object sender, EventArgs e) 
    25     {
    26         // 在新会话启动时运行的代码
    27     }
    28 
    29     void Session_End(object sender, EventArgs e) 
    30     {
    31         // 在会话结束时运行的代码。 
    32         // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。
    33         // 如果会话模式设置为 StateServer 
    34         // 或 SQLServer,则不会引发该事件。
    35     }
    36        
    37 </script>

    五、页级别处理:

    1 try
    2 {
    3     string str = Request.QueryString["a"].ToString();
    4 }
    5 catch (Exception ex)
    6 {
    7     LogHelper.WriteLog("ErrorInfo", ex);
    8 }

    六、效果:

    本文参考原文:http://fanrsh.cnblogs.com/archive/2006/06/08/420546.html

  • 相关阅读:
    10、mysql序列使用、数据去重
    9、mysql临时表、复制表
    记一次FileOutputStream出现FileNotFoundException(stale file handle)的问题
    记一次ORACLE报ORA-02290: 违反检查约束条件错误
    TreeUtil---生成树状结构数据
    Redis
    Redis事务
    Redis工具类
    Nginx
    EasyExcel动态导出数据
  • 原文地址:https://www.cnblogs.com/ding2011/p/4582739.html
Copyright © 2011-2022 走看看