有什么方法可以在Elmah中以编程方式设置应用程序名称?
我需要根据我在Visual Studio中使用的配置来更改应用程序名称。例如,如果我处于Debug配置中,则我希望应用程序名称在Elmah_Error表的Application字段中显示为" App_Debug"。有人对这个有经验么?还是有另一种方法可以做到?
解决方案
默认情况下,Elmah使用AppPool的应用程序GUID作为默认应用程序名称。当我们查看通过HTTP模块创建的Web界面时,它以此为关键字来识别Elmah_Error表中的错误。
我受命于今年早些时候为我的公司探索此选项。由于Elmah从ErrorLog.cs文件的HttpRuntime.AppDomainAppId
中拉出应用程序名称,因此默认情况下,我找不到任何方法。我们可以用任何想要的键来操纵它。但是,这就是AppPool的GUID。
如此说来,我能够操纵ErrorLog.cs文件将Elmah变成可调用的框架,而不是基于处理程序的框架,并允许我设置ApplicationName。我最终要做的是修改ErrorLog.cs以包含允许我按如下所示设置名称的属性:
public virtual string ApplicationName { get { if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; } return _applicationName; } set { _applicationName = value; } }
我们可能需要做的是对此进行不同的调整,并将ApplicationName设置为不是HttpRuntime.AppDomainAppId
,而是从web.config中提取一个值。总而言之,这是可能的。我这样做的方式增强了ErrorLog.Log(ex)方法,因此我可以使用Elmah拥有Web应用程序以外的可调用框架。回顾过去,我希望我改为使用app / web.config方法。
在Elmah中更改应用程序名称时要记住的一件事。生成/elmah/default.aspx接口的http处理程序将不再起作用。我仍在尝试寻找时间来回想一下;但是,我们可能需要在实施时考虑创建自定义界面。