【发布时间】:2010-12-20 17:46:16
【问题描述】:
我的应用程序需要记录有关用户操作(插入、更新、删除等)和异常的信息,我想将 de log 存储在 Oracle10 上,所以我正在搜索一些要使用的日志框架。 我读了一点:
1 -Log4Net
2 - 记录应用程序块
3 - 艾尔玛
您对这些日志工具有何看法? 有什么好的框架(或实现方式)登录我的应用程序?
*与项目经理讨论后,记录应用程序块 将是我们的选择,但是,让我们对此发表评论 =)
【问题讨论】:
我的应用程序需要记录有关用户操作(插入、更新、删除等)和异常的信息,我想将 de log 存储在 Oracle10 上,所以我正在搜索一些要使用的日志框架。 我读了一点:
1 -Log4Net
2 - 记录应用程序块
3 - 艾尔玛
您对这些日志工具有何看法? 有什么好的框架(或实现方式)登录我的应用程序?
*与项目经理讨论后,记录应用程序块 将是我们的选择,但是,让我们对此发表评论 =)
【问题讨论】:
log4net 和 Logging Application Block 都是有效的选择。我认为 ELMAH 主要专注于 error 日志记录,所以这可能不是您想要的(唯一的)。
在工作中,我在几个项目中使用 log4net。它稳定、高效且可扩展,而且我们从未遇到过任何问题。
我可能会使用 log4net 进行日志记录,并使用 ELMAH 记录异常。它可以手动记录未处理的异常,并且您在应用程序中捕获和处理的任何异常都可以通过对 ELMAH 的一次调用来记录。这可能看起来像双重记录(它是:-))。但是,当您的应用程序发生意外失败时,拥有 ELMAH 日志非常有价值。
我听说过关于NLog project 的好消息,但我自己没有使用过。它似乎比 log4net 复杂一些,但确实有一个额外的好处,即能够自动将上下文信息添加到日志消息中(有点像 ELMAH)。
【讨论】:
我对不同框架的看法:
Log4Net - 喜欢它。这是我最常使用的日志系统。一切都很容易上手。它也非常灵活,允许您记录任何内容。
记录应用程序块 - 也是一个不错的选择。我还是更喜欢 Log4Net(但主要是个人原因)。
Elman - 非常适合插入 ASP.NET 应用程序以记录异常。不过,对于一般的消息记录,我仍然会使用 Log4Net。
我根据我的意见猜测我会建议你做什么......
如果没有,请使用 Log4Net 并创建一个适配器,您可以在应用程序中使用它来简化日志记录。
【讨论】:
我个人喜欢BitFactory.Logging,因为它是轻量级的,并且使用适量的抽象使调用代码易于测试。
也就是说,您想要记录的内容(插入、更新、删除)可以仅使用触发器进行记录,这种解决方案可能会根据您的设置表现得更好。
【讨论】:
无论如何,我个人总是创建一个包装器,所以我有自己的 ILog 实现,它适用于您选择的任何一个。这使得换入或我们的实现变得容易。
我尝试了#2,但这有点痛苦; #1 对我们来说效果很好,但我们没有这样做,只是进行了简单的自定义日志记录。关于#3,我只知道有人在他们的组织中实施它时遇到了困难。不知道为什么,但它实际上看起来很有趣。我不认为你可以对任何个人出错。这部分取决于您喜欢的 API。
HTH。
【讨论】:
Log4net 很安静,它基本上是 log4j 的一个版本。 Elmah 也很好,特别是如果您发现(像我一样)无法写入生产环境中的文件,因为它会写入数据库。此外,Elmah 更适合异常记录,并且很酷,因为它允许您基于事件进行记录。在我的项目中,我通常会同时部署 log4net 和 Elmah
【讨论】:
如果您正在审核数据库中的数据更改,那么您可以在相关表上使用触发器。
对于 dotNet 应用程序的日志记录,使用 TraceSource 写入日志记录信息并使用自定义 TraceListener 写入数据库。真的不需要基类库之外的框架。
【讨论】: