Журнал ошибок ELMAH на основе используемой среды базы данных
Я использую ELMAH для регистрации ошибок в моей базе данных. Проблема, с которой я столкнулся, заключается в том, что ELMAH всегда регистрирует ошибку в моей производственной базе данных. У меня есть две строки подключения в моей базе данных, одна для "Live Environment" и одна для "Dev Environment".
<add name="LivePortal" connectionString="Data Source=Live-Database;Initial Catalog=LivePortal;Persist Security Info=False;User ID=LivePortalAccess;Password=Password;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
<add name="DevConnectionString" connectionString="Data Source=dev-database;Initial Catalog=DevPortal;Persist Security Info=True;User ID=sa-admin;Password=Password" providerName="System.Data.SqlClient" />
<add name="elmah-sqlserver" connectionString="Data Source=****;User ID=****;Password=****;Initial Catalog=****;" providerName="System.Data.SqlClient" />
<elmah>
<security allowRemoteAccess="false" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" />
Остальная часть кода ELMAH, которую я скопировал с сайтов, доступных с подключением ELMAH. Я поставил все необходимые конфигурации, и это ошибка журнала, но только для Live DB.
Я проверил другие сайты, но ни один из сайтов не имеет никакой информации, если мы используем несколько баз данных, указывающих на используемую среду, например Live или Dev.
Любая помощь в этом будет очень полезной.
Заранее спасибо.
2 ответа
У вас также есть возможность использовать одну и ту же базу данных для dev и prod и просто изменить имя приложения.
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="name" applicationName="dev/test/prod" />
Это не решает проблему того, как изменить имя или строку соединения программно, но предлагает другой вариант.
Как примечание, если вы удалите имя приложения, оно будет использовать имя сервера. Таким образом, исключения dev будут просто видны им, и если вы используете dev / test / prod серверы разные (не просто разные домены), то они будут автоматически разделены по имени сервера.
Вам необходимо использовать что-то вроде преобразований web.config, как описано в этом руководстве: Используйте несколько журналов для разных сред.
По сути, вы хотите, чтобы строка подключения указывала на базу данных dev в вашем файле web.config, а затем добавляла web.release.config, web.production.config или любую другую схему именования, указывая на производственную базу данных.