ELMAH不在elmah.axd中显示来自SQL Server的所有错误日志

问题描述 投票:2回答:3

我设置Elmah将错误记录到SQL Server,Web应用程序将所有错误记录到数据库,但并非所有错误都显示在elmah.axd中。

一些缺失的错误是:

  • System.Web.HttpUnhandledException _shutDownMessage = HostingEnvironment启动关闭HostingEnvironment导致关闭_shutDownStack = 在System.Environment.GetStackTrace(例外e,布尔needFileInfo) 在System.Environment.get_StackTrace() 在System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()....
  • System.Web.HttpException 会话状态在此上下文中不可用。
  • _shutDownMessage = IIS配置更改HostingEnvironment启动关闭HostingEnvironment导致关闭CONFIG更改_sh​​utDownStack = 在System.Environment.GetStackTrace(例外e,布尔needFileInfo) 在System.Environment.get_StackTrace().....

请参阅附件截图。

如何使数据库中的所有错误都出现在elmah.axd中?

当我在文件系统中保存错误时,一切都很好但是当我转移到SQL Server时却没有。

谢谢!

error logs in the database

error logs in showing in elmah.axd

asp.net sql-server elmah
3个回答
3
投票

如果我可以谦虚地建立在首席架构师Atif所说的内容上,在你的Web.config中,就是这一节:

<elmah>
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="foo" />
</elmah>

将其设置为:

<elmah>
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="foo" applicationName="*" />
</elmah>

这将显示所有数据库错误记录,而不仅仅是与Elmah正在运行的应用程序名称匹配的记录。如果未提供applicationName属性,则仅返回与IIS分配的标识符匹配的记录,例如“/ LM / W3SVC / 10 / ROOT”。

如果您的应用程序纯粹用于在环境中的所有应用程序中查看已记录的Elmah错误,那么这非常有用。

我<3 Elmah!


2
投票

我认为这是因为你有不同的应用程序名称(请参见屏幕截图中的Application列),SqlErrorLog只显示属于你在web.config中配置的应用程序名称的错误(如果没有,ELMAH将默认为IIS指定的标识符) ,像/LM/W3SVC/10/ROOT)。这是设计使用,因为它允许您将一个后端数据库用于多个Web应用程序。最好配置稳定的逻辑应用程序名称。如果所有这些错误都适用于同一个应用程序,则可以在表上运行UPDATE语句,将Application列设置为相同的值。


0
投票

我使用sqlErrorLog,只为sqlErrorLog设置ApplicationName:代码:

var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
var sqlErrorLog = new Elmah.SqlErrorLog(connectionString);

var controller = executedContext.Controller as Controller;
if (controller != null)
    sqlErrorLog.ApplicationName = controller.Request.ServerVariables["APPL_MD_PATH"];
var errorId = sqlErrorLog.Log(error);

结果图:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.