Как сделать журнал ELMAH для MySQL? - PullRequest
7 голосов
/ 05 января 2012

Мы интегрировали ELMAH с ASP.NET MVC 3, чтобы регистрировать ошибки приложений. Тем не менее, мы еще не сохраняем журнал. С этой целью мы хотели бы сохранить записи журнала ELMAH в MySQL, так как мы уже используем экземпляр этого сервера базы данных для других целей.

Как настроить ELMAH, чтобы он сохранял свой журнал с MySQL?

Ответы [ 2 ]

11 голосов
/ 05 января 2012

Вы можете установить пакет NuGet ELMAH on MySQL

PM> Install-Package elmah.mysql

Вы должны настроить это. от Elmah.MySql.txt , который является частью пакета.

Обратите внимание, что для завершения установки ELMAH.MySql вам нужно будет сделать следующее:

  1. Убедитесь, что у вас установлена ​​последняя версия MySQL Connector из http://dev.mysql.com/downloads/connector/net/ (это необязательно, поскольку мы уже включили MySql.Data.dll, если вы загружаете последнюю версию соединителя, вам не нужна наша версия)
  2. Запустите сценарий Elmah.MySql.sql для своей базы данных
  3. Отредактируйте ваш web.config с правильными настройками в elmah для подключения к вашей базе данных

Дополнительная информация

0 голосов
/ 18 октября 2017

Вот как я настроил elmah для записи в MySQL. В Visual Studio ...

  1. Установить пакет Elmah Nuget
  2. Установить пакет Elmah.MySQL Nuget

Эти две установки вносят некоторые изменения в файл 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>

и фабрики DbProvider верны

<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 ... если вы хотите изменить имя базы данных, убедитесь, что она соответствует вашей базе данных в строке подключения выше.

И это все, что мне нужно было сделать, чтобы запустить его.

Примечание : нужно обратить внимание на использование строчных символов для имени вашей БД в приведенной выше строке подключения, так как имена БД MySQL в нижнем регистре ... Первоначально это работало для меня с верхним регистром но потом он сломался, и мне пришлось его поменять.

...