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

Looking for a framework for logging arbitrary objects in heavily distributed and parallelized system in .NET [closed]

提问人:sbi 提问时间:9/11/2009 更新时间:9/11/2009 访问量:515

问:


我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便用事实和引文来回答。

8年前关闭。

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

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

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

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

但是,有什么值得用作基础并建立我们的东西吗?

C# .NET 网络编程 分布式

评论


答:

3赞 Vinay Sajip 9/11/2009 #1

AFAIK log4net 几乎可以完成所有这些工作。它主要基于过滤的详细级别,尽管您可以使用替代条件进行过滤,但它们不一定是“一等公民”。Filters

另外,re.“重新读取文件” - 我假设您不希望日志记录框架直接支持这一点。毕竟,文件就是文件。

评论

0赞 TrueWill 9/12/2009
+1.请参阅 log4net.sourceforge.net/release/1.2.0.30316/doc/manual/... 。通过创建自定义 appender 来扩展 log4net 也相对容易。
0赞 sbi 9/15/2009
好吧,我认为如果这是唯一的答案,那么可能没有太多其他答案。谢谢!