如何在事件日志中获取更具描述性的错误消息?
我对日志记录还很陌生。 我的事件日志中出现了这些乱码。 找不到源 ( xyAMP ) 中事件 ID ( 0 ) 的描述。 本地计算机可能没有必要的注册表信息或消息 DLL 文件来显示来自远程计算机的消息。 您可以使用 /AUXSOURCE= 标志来检索此描述; 有关详细信息,请参阅帮助和支持。 以下信息是该事件的一部分: 来源:System.Web
如何在诊断错误时使其更有帮助。 这是我的日志代码。
Sub Application_Error(ByVal 发送者作为对象,ByVal e 作为 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
有什么建议来清理这个吗?
谢谢, 〜ck在圣地亚哥
I am pretty new to logging. I get this jibberish in my event log.
The description for Event ID ( 0 ) in Source ( xyAMP ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: SOURCE: System.Web
How can I make this more helpful when diagnosing errors.
Here is my logging code.
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
Any suggestions to clean this up?
Thanks,
~ck in San Diego
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用 ex.ToString() 来获取完整的异常以及所有内部异常实例。 一般来说,这将告诉您异常希望您知道的所有内容。
您唯一可以做的另一件事是编写代码来显示具有此类详细信息的每个异常的详细信息。 例如,
WebException
类具有Response
属性将为您提供有关响应的所有信息,以及Status
属性可以让您了解Response
是否有用。SqlException
有很多详细信息,包括查询生成的所有错误的列表。 您可以编写特殊情况的代码,将这些详细信息转换为文本。而且,顺便说一句,当您使用这么多字符串时,您确实应该使用
StringBuilder
类进行字符串连接。 效率要高得多。You need to use
ex.ToString()
to get the complete exception, along with all inner exception instances. This will tell you all that the exception wants you to know, in general.The only other thing you can do is to write code to display the details of each exception that has such details. For instance, the
WebException
class has aResponse
property that will give you all the information about the response, and aStatus
property which will give you an idea of whether theResponse
will be useful. TheSqlException
has a lot of detail, including a list of all errors generated by your query. You can write special-case code that will translate these details into text.And, BTW, you should really be using the
StringBuilder
class for string concatenations when you're using so many. It's much more efficient.我认为您需要使用 消息编译器 (MC.exe )。
I think you need to use the Message Compiler (MC.exe).