有没有人有log4net的经验,我一直在看elmah这很棒。但我想要更多的控制,即不仅在asp.net中使用日志记录,而且在wpf中使用日志记录。
Anway我决定看看log4net。
我有两个共享业务逻辑的客户端(wpf和asp.net)。
我是否应该在业务逻辑和客户端中提升事件?
我假设业务逻辑将使用app.config / web.config(业务逻辑在另一层 - 一个类项目)
有没有人和elmah一起使用log4net,无论如何你可以让他们共享同一个db表吗?
log4net在我看来是最终的日志框架,但elmah有提交所有SERVER变量和堆栈跟踪等的优势
或者也许它可以获得log4net来保存Stacktrace并完全替换elmah ??
任何评论都非常感谢
答案 0 :(得分:25)
它们用于两个不同的目的。
Elmah用于捕获和存储您不期望的异常。它还提供了一些用于传递异常的前端(网页,RSS,电子邮件警报器)。
另一方面,Log4net用于记录您可能知道可能发生的事件(包括由异常引起的错误)(否则您将没有try / catch块)。
因此,您应该同时使用两者,而不是其中之一。
要回答您的具体问题,您可以获取log4net以记录异常的堆栈跟踪,但您通常不应记录您记录的每个调试消息的堆栈跟踪。也可以记录服务器变量和其他特定于Web的内容,但需要一些您不想做的自定义编码。
答案 1 :(得分:2)
我一直在使用log4net一段时间了,我主要是让我的数据层和业务层执行所有错误记录。但是,如果您的表示层对对象进行了大量的“计算”,那么在其中记录相应的信息也是值得的。
您可以将log4net配置为将其设置存储在.config文件中,或者存储在其自己的单独配置文件中。单独文件的优点是,如果您需要动态切换日志记录模式,您可以在单独的.config文件中执行此操作,而不是让IIS触发应用程序刷新站点。
我还没有使用ELMAH,但看起来确实非常好。我认为更重要的是,它提供了一种无需麻烦地插入现有应用程序的方法。但是,log4net确实提供了一种更简单的方法来获取更详细和更广泛的日志记录信息,因为您有许多配置选项可供使用。
如果您的应用程序不需要细粒度的日志记录,我会选择ELMAH。如果您想采用更详细的方法,请花时间将log4net用于您的应用程序。
那是我的10位。