有没有办法以编程方式在Elmah中设置应用程序名称?

我需要根据我在Visual Studio中使用的配置更改应用程序名称。 例如,如果我在调试配置中,我希望应用程序名称在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处理程序将不再起作用。 我还在努力抽出时间绕回去; 但是,您可能需要在实现时考虑创建自定义界面。

现在可以完全用标记来完成。 只需将applicationName属性添加到web.config文件的 errorLog 部分中的errorLog元素即可。 例:

  

我已经测试了这个,它既可以记录exception,也可以通过Elmah.axd查看日志。

在OP的情况下,可以想象它也可以以编程方式设置,但我没有测试。 对于我和我来说,对于大多数情况来说,标记方法就足够了。