在.NET中寻找一个用于在高度分布式和并行化系统中记录任意对象的框架

时间:2009-09-11 14:57:59

标签: c# .net network-programming distributed

(注意:我已经看到了几个关于.NET日志框架的问题,但是没有看到任何类似于我们要求的问题。所以请不要将这个作为副本关闭。)

我们需要一个具有以下功能的高度分布式并行.NET应用程序的日志框架:

  • 它必须是线程安全的,因为许多线程会生成日志消息。
  • 每条日志消息都需要有一个时间戳。如果框架会自动添加它,那将使它更容易。
  • 除了时间戳之外,必须至少有严重性/详细程度或类似附加到日志消息的内容,以便可以通过它进行过滤。更多(正交)预定义参数(消息来源,目标受众,消息类型,等等......)将会很棒。
  • 但是,无论如何我们还需要添加自己的参数。这些被视为一流的框架公民(可以与预定义的东西一样对待)越多越好。
  • 框架应该能够至少根据预定义的参数过滤消息。我们需要在运行期间随心所欲地更改过滤。
  • 我们需要通过它来放置对象,而不是字符串。最后可能会从这些对象生成字符串,但是日志消息参数不能从一开始就放入扁平字符串。
  • 由于客户会看到某些日志记录,因此我们可能需要对其进行国际化。 (鉴于我们想记录对象,而不是字符串,这不是太难,但越多越好。)
  • 我们需要能够在过滤到文件后写下留下的日志消息并重新读取这些文件。如果框架能够流出并输入,我们不必自己实现。
  • 每条日志消息可能同时发送到多个目标(文件,窗口,远程计算机)。
  • 如果必须通过网络发送日志消息,则可能需要在专用线程中执行此操作。
  • 这件事将从C#中使用。

好的,所以我们认为几乎不可能找到能完成所有这些开箱即用的东西。这些只是太多的要求,可能有太多不常见的要求。

但有什么值得用作基础并构建我们的东西?

1 个答案:

答案 0 :(得分:3)

AFAIK log4net几乎完成了所有这些工作。它主要是基于详细程度的过滤,虽然您可以使用Filters来过滤使用替代标准,但它们不一定是“一等公民”。

另外,重新。 “重新读取文件” - 我认为你不希望日志框架直接支持这个。毕竟文件是文件。

相关问题