ASP.NET应用程序的日志框架

3
我的应用程序需要记录用户的操作(插入、更新、删除等)和异常信息,我希望将日志存储在Oracle10上,因此我正在寻找可用的日志框架。我研究了一下以下几个框架:
1.Log4Net
2.Logging Application Block
3.Elmah
您对这些日志工具有什么看法?
您认为哪种框架(或实现方式)是在我的应用程序上记录日志的好方法?
*在与项目经理讨论后,我们选择了Logging Application Block,但是,让我们来谈谈这个选择=)

请参阅https://dev59.com/kXRB5IYBdhLWcg3wH0WW?answertab=votes#tab-top中的答案。 - Michael Freidgeim
6个回答

3
log4net和Logging Application Block都是有效的选择。我认为ELMAH主要关注错误日志记录,所以那可能不是你想要的(唯一的东西)。
在工作中,我在几个项目中使用log4net。它稳定、高效、可扩展,我们从来没有遇到过任何问题。
我可能会使用log4net进行日志记录,同时使用ELMAH记录异常。它可以手动记录未处理的异常,并且您在应用程序中捕获和处理的任何异常都可以通过单个调用ELMAH来记录。这可能看起来像双重记录(确实是:-))。但当应用程序出现意外故障时,拥有ELMAH日志非常有价值。
我听说过NLog项目的好处,但自己没有使用过。它似乎比log4net更复杂,但具有自动添加上下文信息到日志消息中的附加好处(有点像ELMAH)。

没有理由阻止 OP 使用 ELMAH 记录错误,同时使用 log4net 记录非错误相关信息。 - Scott Mitchell
@Scott,当然不是,这实际上也是我自己所做的事情。我已经把它加到答案中以避免混淆。 - driis

1

关于不同框架的看法:

  1. Log4Net - 我喜欢它。这是我最常用的日志系统。一切都相当容易上手。它也非常灵活,可以记录几乎任何内容。

  2. Logging Application Block - 也是一个不错的选择。但我仍然更喜欢Log4Net(但原因大多是个人偏好)。

  3. Elman - 适合在ASP.NET应用程序中记录异常。但对于一般的消息记录,我仍然会选择Log4Net。

根据我的意见,我猜测你可能会采取以下建议...

如果没有其他特殊要求,使用Log4Net并创建一个适配器,以便在应用程序中轻松进行日志记录。


谢谢Justin。我也喜欢log4Net,应用程序块似乎也不错。 - Ewerton

0

我个人喜欢BitFactory.Logging,因为它很轻量级,并使用了适量的抽象来使调用代码易于测试。

话虽如此,你想要记录的事情(插入、更新、删除)可以仅使用触发器来记录,这可能会根据你的设置而表现更好。


0
我个人总是创建一个包装器,所以我有自己的ILog实现,可以与你选择的任何一个一起工作。这样可以方便地切换实现。
我尝试了第二种方法,但有点麻烦;第一种方法对我们来说可能效果不错,但我们并没有选择它,而是采用了简单的自定义日志记录。关于第三种方法,我只知道有人在他们的组织中实施时遇到了一些问题。不知道原因,但它看起来确实很有趣。我认为无论哪种方法都不会错。部分取决于你喜欢的API。
希望能对你有所帮助。

0

Log4net 很不错,它基本上是 log4j 的一个版本。Elmah 也很好,特别是如果你发现(像我一样)在生产环境中无法写入文件,因为它会写入数据库。此外,Elmah 更适合于异常日志记录,并且很酷,因为它允许你基于事件记录日志。在我的项目中,我通常同时部署 log4net 和 Elmah。


0

如果您正在审计数据库中的数据更改,则可以在相关表上使用触发器。

对于在dotNet应用程序中记录日志,请使用TraceSource编写日志信息,并使用自定义TraceListener编写到数据库中。实际上不需要超出基础类库的框架。


谢谢Kristen,但我们需要记录一些业务操作,比如“产品价格降低10%”。 - Ewerton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接