【问题标题】:Intercept elmah logging ASP.NET MVC [duplicate]拦截 elmah 记录 ASP.NET MVC [重复]
【发布时间】:2017-03-07 22:38:06
【问题描述】:

当 elmah 引发错误时,我想尝试拦截并做一些其他处理(导出数据库)。有没有办法做到这一点?

【问题讨论】:

    标签: asp.net-mvc elmah elmah.mvc


    【解决方案1】:

    ELMAH 公开了两个事件以执行此操作:ErrorLog_Filtering 和 ErrorLog_Logged。 ErrorLog_Filtering 在记录到配置的错误日志之前被调用,ErrorLog_Logged 在之后被调用。您将在 ELMAH site 上找到有关 error filtering 的文档。 ErrorLog_Logged 并没有真正记录在案,但您可以在本文中看到它的一个示例:Logging to multiple ELMAH logs。

    话虽如此,您可能不想在ErrorLog_Logged 和ErrorLog_Filtering 中执行任何长时间运行的任务。它会减慢你的系统。我不确定您通过在每个错误上导出数据库来达到什么目的?

    【讨论】:

      【解决方案2】:

      是的,有办法

      1.让我们创建一个项目名称ElmahMvc

      2.安装nuget包nuget

      Install-Package Elmah.MVC
      

      3。引发 Exception 。您可以通过本地 url/elmah 访问错误日志

      http://localhost:20351/elmah

      保存数据库和发送电子邮件需要一些配置......

      让我们看看

      1.下载ELMAH脚本形式官网

      ELMAH

      2.添加一个名为log的数据库并运行脚本

      3.在web.config中添加连接字符串

        <connectionStrings>
          <add name="elmah" connectionString="Data Source=.;Initial Catalog=log;Persist Security Info=True;User ID=sa;Password=pass" providerName="System.Data.SqlClient" />
        </connectionStrings>
      

      4.在web.config中添加elmah元素

        <elmah>
      
          <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah" /> 
         <!--For Addtional Mail Config .Remove it if not need for mail on every error-->
          <errorMail from="waltoncrm@waltonbd.com"
                 to="mrahman.cse32@waltonbd.com"
      
                 subject="Application Exception"
                 async="false"
                 smtpPort="25"
                 smtpServer="YourServer"
                 userName="uName"
                 password="pass">
          </errorMail>
        </elmah>
      

      还有邮件补充

      在 System.WebServer 下

      <system.net>
          <mailSettings>
            <smtp deliveryMethod ="Network">
              <network host="smtp.gmail.com" port="587" userName="yourgmailEmailAddress"   password="yourGmailEmailPassword" />
            </smtp>
          </mailSettings>
        </system.net>
      

      使用 Visual Studio 2013 下载我的示例项目和 Elmah 脚本 akash365.com

      注意:如果您不想让您的程序崩溃或在 asp.net 网络表单中使用它静态 [WebMethod] 这看起来很完美

      try 
      {
          //some web method code 
      }
      catch(Exception ex)
      {
          Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
      }
      

      【讨论】:

        猜你喜欢
        • 2014-05-07
        • 2014-03-23
        • 2011-11-22
        • 2010-10-20
        • 2011-06-08
        • 1970-01-01
        • 2019-05-25
        • 2019-06-04
        • 2012-10-17
        相关资源
        最近更新 更多