根据数据库环境记录ELMAH错误正在使用中

时间:2016-01-04 14:17:04

标签: asp.net-mvc-4 web-config elmah elmah.mvc

我正在使用ELMAH记录数据库中的错误。我在这里遇到的问题是ELMAH总是在我的生产数据库中记录错误。 我的数据库中有两个连接字符串,一个用于“实时环境”,另一个用于“开发环境”。

<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 个答案:

答案 0 :(得分:0)

您需要使用本指南中描述的web.config转换之类的内容:Use multiple logs for different environments

基本上,您希望连接字符串指向web.config文件中的dev数据库,然后添加web.release.config,web.production.config或任何命名模式,指向生产数据库。 / p>

答案 1 :(得分:0)

您还可以选择为dev和prod使用相同的数据库,只需更改应用程序名称。

<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="name" applicationName="dev/test/prod" />

这不能解决如何以编程方式更改名称或连接字符串的问题,但提供了另一种选择。

作为旁注,如果删除应用程序名称,它将使用服务器名称。通过这种方式,dev的异常只对他们可见,如果你的dev / test / prod服务器不同(不只是不同的域),那么它将自动被服务器名称分隔。