1

我正在为我的 ASP.NET MVC 应用程序寻找一个好的集中式日志解决方案(用于Windows服务器)。

我的应用程序是可扩展的,我希望我的日志也可扩展(因此日志服务器不会成为单点故障/瓶颈)。

我之前使用过 LogFaces,但这个解决方案不可扩展。它使用单个日志服务器。

我使用 log4net 作为记录器,并寻找可以编写(或使用)附加程序将日志推送到的解决方案。

有什么建议么?

谢谢!荣

4

3 回答 3

1

查看ELMAH,效果很好,可以运行每个应用程序,或者一个实例来覆盖服务器上的所有应用程序

于 2011-12-20T15:46:11.047 回答
1

点差符合要求。它不是日志服务,但许多项目使用它来进行分布式日志记录(例如 Apache Web 服务器的mod_log_spread模块)。它有一个可用的 C# 客户端。

它的价值在于一个简单的原则:生成日志的应用程序不应该被日志记录的行为所限制或中断。日志记录通常是应用程序的次要问题,而让您的日志文件目标磁盘填满(或您的日志服务崩溃)是您的应用程序失败的一个非常糟糕的原因。

要达到这种分离级别,您必须以这样一种方式构建您的应用程序,即它可以完全异步地进行日志记录,并且独立于日志记录“服务”。Spread 使用一种广为人知的成熟技术实现了这一点:UDP/组播。

使用 Spread 进行日志记录意味着您的应用程序将通过 UDP 以“即发即弃”模式登录。如果没有设置Spread 守护程序来使用这些多播消息,则日志消息将永远消失。但是,日志生产者和消费者之间的解耦意味着您的应用程序永远不必担心日志会填满磁盘,也不必担心花时间查找和使用 TCP 连接到中央日志服务器。

不过,Spread 并不适用于所有应用程序。您的环境可能不支持多播(因此 EC2 不支持,对于初学者),或者您的网络管理员可能会阻止您的生产环境中的多播数据包。

于 2011-12-20T20:51:49.033 回答
0

我有一个附加程序,它通过 wcf 的 net.tcp 绑定将消息发送到远程机器上的 msmq 消息队列。另一端有一个服务将这些消息记录到数据库中。

如果您只谈论 asp.net,elmah 可能非常好 - 我的理解是它只插入其中并且不解决更一般的事情,如 Windows 服务等。不确定 wcf 应用程序,或者您是否关心您的 asp.net 应用程序之外的任何内容。我猜您的系统中可能还有更多内容,并且您希望标准化。此外,由于您关心规模,您可能会担心必须直接从 asp.net 访问数据库以进行日志记录。我的理解是,这就是 elmah 所做的。还没有研究它,但它可能可以扩展为我建议的 msmq。如果您真的关心规模,我认为您想以一种或另一种方式合并消息队列,而 wcf 是一个很好的选择。

于 2011-12-20T20:25:05.303 回答