(注意:我看到了一些关于.NET日志框架的问题,但没有看到任何类似于我们要求的问题。因此,请不要将此项作为副本关闭。)
我们需要一个用于高度分布式和并行.NET应用程序的日志框架,它具有以下功能:
-
它必须是线程安全的,因为许多线程将生成日志消息。
-
每个日志消息都需要有一个时间戳。如果框架自动添加这个,这将使它更容易。
-
除了时间戳之外,必须至少有一个严重性/详细性或类似于附加到日志消息的内容,以便可以通过它过滤它们。更多(正交的)预定义参数(消息源、预期的访问群体、消息类型、任何…)将是很好的选择。
-
不过,我们还是需要添加自己的参数。它们被当作一级框架公民对待的越多(可以像对待预先定义的东西那样对待它们),效果就越好。
-
框架应该能够根据至少预先定义的参数过滤消息。我们需要在运行时随时更改过滤。
-
我们需要把
物体
通过这个,而不是字符串。字符串可以在末尾从这些对象生成,但日志消息参数不能从一开始就放在一个平面字符串中。
-
由于客户将看到一些日志记录,因此我们可能需要将它们国际化。(考虑到我们想要记录对象,而不是字符串,这不会太难,但支持越多越好。)
-
我们需要能够将过滤后留下的日志消息写入到文件中,并重新读取这些文件。如果框架具有流式输出和流式输入的能力,我们就不必自己实现这一点。
-
每个日志消息可能同时发送到多个目标(文件、窗口、远程计算机)。
-
如果必须通过网络发送日志消息,则可能需要在专用线程中这样做。
-
这东西将在C使用。
好吧,所以我们认为几乎不可能找到一个可以实现这一切的东西。这些要求太多了,可能也太多不常见的要求。
但是有没有什么东西可以作为基础并建立我们的东西呢?