混合使用C#、托管C++和非托管C++应用程序的日志框架

4

具体背景: 我有一个用C#编写的Word插件,这个插件调用了另一个应用程序(EndNote)中开发的插件,该插件由已管理和未管理代码组成。C#代码从一个进程中运行,而C++代码从另一个进程中运行。此外,C++代码是多线程的。

我一直在考虑使用以下任何一种或组合,但也可以考虑其他建议:

  • log4net
  • log4cxx
  • nlog
  • System.Diagnostics.Trace
  • System.Diagnostics.TraceSource

你会选择哪一个?

1个回答

2

我会选择一个适用于C#的框架和一个适用于C++的框架(您是否考虑过log4cplus?),并决定哪个框架可以轻松地适应,以便将其日志输出写入另一个框架。选择哪个取决于您的代码结构(“谁知道谁?”)。


该应用程序使用C++编写,自托管一个WCF服务,供C#应用程序调用。然而,C#应用程序具有独立于C++应用程序的用例。此外,C++应用程序在主机应用程序(Endnote)启动或关闭时执行一小部分代码,但除此之外,仅在被调用时运行。 - Nathan Ellenfield
@Nathan - 听起来你在C++应用程序中需要记录的内容,在C#应用程序中都可以记录。 - Security Hound
我认为我至少需要记录C++应用程序中发生的错误,但这些错误不能传播到C#应用程序。例如,如果托管WCF服务失败,除非C++应用程序也进行一些日志记录,否则我将无法记录到有用的信息。此外,如果由于主机故障而调用服务时出现异常,我该如何记录它?我认为在一个地方处理所有日志记录是有好处的,但我觉得我需要一些额外的日志记录。我可以编写一个临时日志并在事务完成时将其删除,但这样做的集中日志记录有什么好处呢? - Nathan Ellenfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接