繁体   English   中英

在ASP.NET应用程序中,在Visual Basic中记录异常的最佳方法是什么?

[英]What is the best way to log exceptions in Visual Basic, on an ASP.NET Application?

我正在使用Visual Basic编写的ASP.NET Web应用程序,我正在尝试追踪我收到的错误消息。

我想让它将异常记录到一个文件(或事件日志),所以我可以看到它,因为错误只发生在生产服务器上,而不是在开发环境中(因此VS没有安装在那里...)。

有没有人对如何做到这一点的最佳实践有任何想法?

干杯

不确定它是否是“最佳实践”,但最常见的方法是使用log4net

使用log4netEnterprise Library Logging 我还添加了一个http模块,用于记录所有未处理的错误(过滤掉404错误)。

在执行全局错误处理程序时,您可能希望开发某种方式来了解您已经记录了错误。 如果您希望将错误记录在更靠近错误源的位置,从而允许您将更多上下文包含在出错的位置,则会发生这种情况。

在我记录任何错误的情况下,我在一个例外的数据集合中添加了一个项目。 然后,我的全局错误处理程序检查所有异常对象,验证我们没有记录任何异常对象。

惊讶没有人提到过Elmah

Elmah是专为使用ASP.NET进行错误记录而构建的,其中一个很棒的功能是,只需将DLL放在Bin目录中,然后对Web进行一些编辑即可将其添加到ASP.NET应用程序中。 .config文件。 无需更改代码。

如果您运行的是ASP.NET 2.0或更高版本,那么最好的办法就是什么都不做。 默认情况下,ASP.NET Health Monitoring会将异常记录到应用程序事件日志中。 只需使用eventvwr.exe并从“ASP.NET”中查找警告。 它记录的信息非常完整。

当我说“什么都不做”时,我的意思是如果你只是要记录它们,就不要捕捉异常。 如果您愿意,可以设置自定义错误页面,但要确保不会在顶层捕获异常。

凌乱:当它出现时,抓住它(假设你可以?)并尽可能多地将数据丢弃到PAGE。 将其放在HTML注释中,以便用户无法看到它。 就像是:

lblError.Text =(在此处放置格式化的异常信息);

<! - <asp:label id = lblError /> - >

几乎一样凌乱:查看Trace.WriteLine有点东西。 您可以在ASP.NET中启用跟踪,允许您转到特定页面(_trace.axd?)并获取该页面加载的所有消息的转储。 我没有真正使用它,但确实有效。

稍微不那么混乱(因为这似乎是暂时的):使用Trace.WriteLine输出内容,并在服务器上运行debugview(来自microsoft),如果您有物理访问权限。 然后你可以捕获这个调试输出(核心win32 api就是OutputDebugString - 我认为.net调用是Debug.WriteLine)

更好:Log4Net。 设置它以便您可以在任何地方使用它。 大多数时候把它放在“错误”上,但在这种情况下,使用“DEBUG”直到找到解决方案。

我会去3,然后是4或3,然后4,下次你清理代码库一点。

:)

如果您可以获取该站点的global.asax - 那么在Global.asax的'Application_Error'部分中执行类似这样的操作

Dim ex As New Exception()ex = Server.GetLastError()。GetBaseException()Dim g As new generalfunctions ASendEmailFunction(ex.Message.ToString()&ex.Source.ToString()&ex.StackTrace.ToString())

这将获取应用程序的每个错误并向您发送所有详细信息 - 您需要创建只向您发送包含内容的电子邮件的ASendEmailFunction()

(你可以做得比这更好但是我直接在这个盒子里打字)

最常用的日志记录库是企业库日志记录块或log4Net:-Enterprise Library Logging Block文章: http//www.codeproject.com/KB/architecture/GetLoggingWithEntLib.aspx -Log4Net: http://www.ondotnet .COM /酒吧/ A / DOTNET / 2003/06/16 / log4net.html

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM