EnterpriseLibrary ExceptionHandling不写入我的日志文件

时间:2010-05-18 15:16:01

标签: asp.net enterprise-library

我有企业记录&在我的网络应用程序中启用异常日志web.config已设置好,所以一切都应该有效。它之前在其他服务器上工作过,因为位于应用程序根目录中的trace.log文件中包含跟踪信息。 我在我的本地计算机上清除了我的trace.log,以便在我遇到异常时测试它是否正常工作。我创建了一个抛出异常的测试页面。然后我调用ExceptionPolicy.HandleException(例如,“异常策略”)并在需要时重新抛出。 我的trace.log是空的,所以我无法弄清楚它为什么不起作用。 我对此很陌生,但我知道这一定是有用的。我不确定的是,无论如何都会将异常写入日志文件,或者仅作为HandleException()调用的结果?

我正在努力调试为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题并且正在记录帮助我和我其他。这是由于我缺乏对其工作方式的了解以及我们承包商编写的奇怪代码。

基本上我们的堆栈由

组成

DA层 BO层 应用层

BO层访问DA。如果出现问题,则在Try / Catch中处理。在catch中,它调用ExceptionPolicy.HandleException()并返回rethrow布尔值。但是它不检查此值以执行另一个throw,这意味着错误不会被提交给ASP.NET错误运行时。

奇怪的是,他们在BO对象上设置了一个IsExceptionGenerated标志,然后在App层上进行检查。然后,应用层重定向到'〜\ error.aspx'。

我已更改此内容,因此会检查策略并重新抛出异常。但是没有任何地方记录了这个例外。在重定向到error.aspx之前,我不希望在整个应用程序中分散大量日志记录。因此我添加了global.asax错误处理程序来记录错误。我也可以删除所有重定向,并让web.config使用CustomErrors部分指定直接到错误页面。

它现在似乎有用了!

我想知道我的应用程序中的response.redirects(“error.aspx”)是不是很糟糕。我想知道他们写这篇文章时的想法。我可以理解,有时你可能想要错误,有时可以继续优雅但仍然可以跟踪它,但肯定可以通过使用不同的异常策略来处理。

任何想法?