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

时间:2017-02-02 03:34:45

标签: asp.net sql-server elmah

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

缺少的一些错误是:

  • System.Web.HttpUnhandledException

      

    _shutDownMessage = HostingEnvironment启动关闭HostingEnvironment导致关闭_shutDownStack =
      在System.Environment.GetStackTrace(Exception e,Boolean needFileInfo)
      在System.Environment.get_StackTrace()
      在System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()....

  • System.Web.HttpException

      

    会话状态在此上下文中不可用。

  •   

    _shutDownMessage = IIS配置更改HostingEnvironment启动关闭HostingEnvironment导致关闭CONFIG更改_sh​​utDownStack =
      在System.Environment.GetStackTrace(Exception e,Boolean needFileInfo)
      在System.Environment.get_StackTrace().....

参见随附的屏幕截图。

如何使数据库中的所有错误都显示在elmah.axd

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

谢谢!

error logs in the database

error logs in showing in elmah.axd

3 个答案:

答案 0 :(得分: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分配的标识符匹配的记录,例如 - &#34; / LM / W3SVC / 10 / ROOT&#34;。

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

我&lt; 3 Elmah!

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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