如何让ELMAH登录到MySQL?

时间:2012-01-05 10:43:41

标签: mysql asp.net-mvc logging elmah

我们已将ELMAH与ASP.NET MVC 3集成,作为记录应用程序错误的方法。但是,我们还没有坚持日志。为此,我们想在MySQL中存储ELMAH的日志条目,因为我们已经将此数据库服务器的实例用于其他目的。

我们如何配置ELMAH以便它使用MySQL持久保存日志?

2 个答案:

答案 0 :(得分:11)

您可以安装NuGet包ELMAH on MySQL

  

PM>安装包elmah.mysql

你必须配置它。来自 Elmah.MySql.txt ,这是该软件包的一部分。

请注意,要完成ELMAH.MySql的安装,您必须执行以下操作:

  1. 确保从http://dev.mysql.com/downloads/connector/net/安装了最新的MySQL连接器(这是可选的,因为我们已经包含MySql.Data.dll,如果您下载最新的连接器,则不需要我们的版本)
  2. 对数据库运行Elmah.MySql.sql脚本
  3. 使用elmah中的正确设置编辑您的web.config以连接到您的数据库
  4. 更多信息

答案 1 :(得分:0)

这就是我将elmah配置为写入MySQL的方法。在Visual Studio中......

  1. 安装Elmah Nuget Package
  2. 安装Elmah.MySQL Nuget Package
  3. 这两个安装对web.config文件进行了一些更改,这些是要查找的相关部分:

    <elmah>
    <security allowRemoteAccess="false" />
    <errorLog type="Elmah.MySqlErrorLog, Elmah" connectionStringName="elmah-mysql" />
    </elmah>
    

    这需要一个新的连接字符串...... elmah已经为我添加了模板,我只需要输入正确的凭据:

    <connectionStrings>
    <add name="DevDB" connectionString="Server=localhost; Database=NZ; Uid=myuserid; Pwd=mypwd" providerName="MySql.Data.MySqlClient"/>
    <add name="elmah-mysql" connectionString="Server=localhost; Database=elmah; Uid=myuserid; Pwd=mypwd" providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    

    如果您使用的是EntityFramework

    ,请确保EntityFramework提供程序正确无误
    <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    </entityFramework>
    

    和DbProviderFactories是正确的

    <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
    </system.data>
    
    1. 从此处获取相关的SQL脚本:elmah.Mysql并运行脚本以创建表和过程。另请注意,默认情况下,这些脚本会创建一个名为elmah的数据库...如果要更改数据库名称,请确保它与上面连接字符串中的数据库一致。
    2. 而这就是我必须做的才能让它运转起来。

      注意:要注意的一件事是在上面的连接字符串中使用小写字符作为数据库名称,因为MySQL数据库名称是小写的...它最初对我有用大写然后它破了,我不得不改变它。