如何在事件日志中获得更具描述性的错误消息?

时间:2009-07-07 17:07:47

标签: event-log error-logging

我对记录很新。我在事件日志中得到了这个乱码。 无法找到源(xyAMP)中事件ID(0)的描述。本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息。您可以使用/ AUXSOURCE =标志来检索此描述;请参阅帮助和支持以获取详细信以下信息是事件的一部分:SOURCE:System.Web

如何在诊断错误时更有帮助。 这是我的日志代码。

Sub Application_Error(ByVal sender As Object,ByVal e As EventArgs)         Dim ctx As HttpContext = HttpContext.Current

    Dim ex As Exception = ctx.Server.GetLastError()

    Dim data As String = String.Empty
    Dim referer As String = IIf(ctx.Request.ServerVariables("HTTP_REFERER") IsNot Nothing, ctx.Request.ServerVariables("HTTP_REFERER").ToString(), String.Empty)
    Dim sForm As String = IIf(ctx.Request.Form IsNot Nothing, ctx.Request.Form.ToString(), String.Empty)
    Dim sQuery As String = IIf(ctx.Request.QueryString IsNot Nothing, ctx.Request.QueryString.ToString(), String.Empty)

    data = "SOURCE: " + ex.Source + vbCrLf
    data += "MESSAGE: " + ex.Message + vbCrLf
    data += "FORM: " + sForm + vbCrLf
    data += "QUERYSTRING: " + sQuery + vbCrLf
    data += "TARGETSITE: " + ex.TargetSite.ToString() + vbCrLf
    data += "STACKTRACE: " + ex.StackTrace + vbCrLf
    data += "REFERRER: " + referer

    Dim eventLogName As String = "xyAMPLog"
    Dim sourceName As String = "xyAMP"

    Dim xyAMPLog As New EventLog()
    xyAMPLog.Log = eventLogName
    xyAMPLog.Source = sourceName


    Try
        xyAMPLog.WriteEntry(data, EventLogEntryType.Error)

    Catch exc As Exception
        Console.WriteLine(exc.Message)
    End Try

    'ctx.Server.ClearError()


End Sub

有什么建议来清理它吗?

谢谢, 〜在圣地亚哥

2 个答案:

答案 0 :(得分:0)

您需要使用ex.ToString()来获取完整的异常以及所有内部异常实例。一般而言,这将告诉您异常要求您了解的所有内容。

您可以做的唯一其他事情是编写代码以显示具有此类详细信息的每个异常的详细信息。例如,WebException类具有Response属性,可以为您提供有关响应的所有信息,以及Status属性,可以让您了解Response将是有用的。 SqlException包含大量详细信息,包括查询生成的所有错误的列表。您可以编写将这些详细信息转换为文本的特殊代码。

而且,顺便说一下,当你使用这么多时,你应该使用StringBuilder类进行字符串连接。效率更高。

答案 1 :(得分:-1)

我认为你需要使用Message Compiler (MC.exe)