集中日志解决方案
我正在为ASP.NET MVC应用程序寻找一个集中的日志解决方案(适用于Windows服务器)。集中日志解决方案
我的应用程序是可扩展的,我希望我的日志也可以扩展(所以日志服务器不会是单点故障/瓶颈)。
我之前使用过LogFaces,但此解决方案不具有可伸缩性。它使用单个日志服务器。
我使用log4net作为记录器,寻找可以写入(或使用)appender来推送日志的解决方案。
有什么建议吗?
谢谢! Roei
所有的应用程序我有一个通过WCF的净利润将消息发送到MSMQ消息队列在远程机器上的附加目的地。 tcp绑定。另一端有一个服务将这些消息记录到数据库中。
elmah可能是相当不错的,如果你只是谈论asp.net - 我的理解是,它只是插入到,并没有解决像Windows服务等更一般的东西。不知道wcf应用程序,或者你甚至关心超出你的asp.net应用程序的任何东西。我猜想你的系统中可能还有更多,并且你想标准化。另外,因为您关心的是规模,您可能会担心必须直接从asp.net访问数据库进行日志记录。我的理解是这是elmah所做的。还没有研究过它,但它可能会扩展到我建议使用msmq的方式。如果你真的关心规模,我认为你想以这种或那种方式整合消息队列,而wcf是一个很好的选择。
谢谢,我会看看它! – Roei 2011-12-21 09:45:04
Spread将符合该法案。这不是一个日志记录服务,但一些项目将其用于分布式日志记录(例如Apache Web服务器的mod_log_spread模块)。它有一个C#的客户端available here。
它的价值在于一个简单的原则:产生日志的应用程序不应该被记录的行为所约束或中断。日志记录通常是应用程序的一个次要问题,并且日志文件目标磁盘已满(或日志服务崩溃)是应用程序失败的一个非常糟糕的原因。
要达到此分离级别,您必须构建您的应用程序,使其可以完全异步并独立于日志记录“服务”进行日志记录。传播使用一个很好理解和建立的技术实现这个:UDP /组播。
使用Spread进行记录意味着您的应用程序将通过UDP登录一个“fire and forget”模式。如果没有设置Spread守护进程来使用这些组播消息,则日志消息将永远消失。但是,日志生产者和消费者之间的解耦意味着您的应用程序永远不需要担心日志填满磁盘,也不必担心花时间使用TCP查找和连接到中央日志服务器。
传播不是每个应用程序,但。您的环境可能不支持多点传送(因此,对于初学者,EC2已停用),或者您的网络管理员可能会阻止您的生产环境中的多点传送数据包。
感谢您的回复!我在EC2上运行我的环境,正如你所说 - 这是一个问题是这种情况... – Roei 2011-12-21 09:36:06
也许Windows事件日志?请记住,写入日志只是等式的一半。管理他们并报告他们的信息是另一半。如果您是开发人员编写代码以写入日志,那么您需要咨询管理员,他们需要在生产中进行管理。他也可能有一些见解/偏好(如事件日志,数据库或其他)。 – David 2011-12-20 15:49:37