14

有没有人有使用 log4net 的经验,我一直在看很棒的 elmah。但我想要更多的控制,即不仅在 asp.net 中而且在 wpf 中使用日志记录。

Anway 我决定看看 log4net。

我有 2 个客户端(wpf 和 asp.net),它们都共享业务逻辑。

我应该在业务逻辑和客户端中引发事件吗?

我假设业务逻辑将使用 app.config / web.config (业务逻辑在另一层 - 一个类项目)

有没有人将 log4net 和 elmah 一起使用,无论如何你可以让他们共享同一个数据库表吗?

log4net 在我看来是终极的日志框架,但 elmah 具有提交所有 SERVER 变量和堆栈跟踪等的优势

或者也许有可能让 log4net 也保存 Stacktrace 并完全替换 elmah?

任何评论都非常感谢

4

2 回答 2

25

它们用于两种不同的目的。

Elmah 用于捕获和存储您没有预料到的异常。它还提供了一些前端(网页、RSS、电子邮件警报器)来传递异常。

另一方面,Log4net 用于记录您知道可能发生的事件(包括由异常引起的错误)(否则您将没有 try / catch 块)。

因此,您应该同时使用两者,而不是其中之一。

要回答您的具体问题,您可以让 log4net 记录异常的堆栈跟踪,但通常不应为您记录的每条调试消息记录堆栈跟踪。记录服务器变量和其他特定于 Web 的内容也是可能的,但需要一些您不想做的自定义编码。

于 2009-04-28T22:09:53.420 回答
2

我已经使用 log4net 一段时间了,我主要让我的数据层和业务层完成所有的错误日志记录。但是,如果您的表示层对对象进行了大量的“计算”,那么在此处记录适当的信息也是值得的。

您可以将 log4net 配置为将其设置存储在 .config 文件中,或者存储在其自己的单独配置文件中。单独文件的优点是,如果您需要动态切换日志记录模式,您可以在单独的 .config 文件中进行操作,并且不会让 IIS 触发站点的应用程序刷新。

我还没有使用过 ELMAH,但它看起来确实很不错。我认为更重要的是,它提供了一种轻松插入现有应用程序的方法。但是,log4net 确实提供了一种更简单的方法来获取更详细和更广泛的日志信息,因为您有很多配置选项可供使用。

如果您的应用程序不需要细粒度级别的日志记录,我会选择 ELMAH。如果您想采用更详细的方法,请花时间将 log4net 用于您的应用程序。

那是我的 10 位。

于 2009-04-28T22:06:18.187 回答