5

试图为分布式系统找到一个商业日志框架。此框架必须允许远程服务器上的 .NET 应用程序记录可以在中央位置收集的消息。如果可能,中央位置应将消息存储在 SQL Server 数据库中。

要求:

  1. 能够在远程服务器上启动消息记录,即使网络中断阻止消息立即发送到中央位置。
  2. 将消息分派到中央位置应由运行 .NET 应用程序的进程以外的进程处理,以防止 ASP.NET 应用程序或 Web 服务的性能下降。
  3. 确保最终将消息传递到中央位置。例如,如果远程服务器在网络没有响应的时间快要结束时重新启动,则在远程服务器和正常网络条件恢复时仍应传送记录的消息。
4

3 回答 3

1

我认为您应该能够使用开箱即用的 Microsoft Enterprise Library 和 MSMQ 来做到这一点。Entlib Logging 应用程序块有一个内置的 MSMQ 侦听器。虽然我们在几个项目中使用了 Entlib 日志记录,但我个人没有使用过 MSMQ 分发服务。

http://msdn.microsoft.com/en-us/library/dd203267.aspx

于 2009-12-05T18:11:16.603 回答
1

一个非常简单的解决方案可能是继续写入本地日志并创建一个单独的进程以将日志重新发布到服务器。您可以使用多个选项发布日志,包括发布订阅消息总线,如MassTransit或 msmq。

使用不同的解决方案,如编写特定的 log4net 适配器绝对是一种选择,但它可能会导致耦合/依赖问题,因此采用必须考虑实际的部署环境。

于 2009-12-05T15:23:56.267 回答
0

log4net是选择。它是线程安全的

于 2009-12-05T11:36:09.150 回答