2009-01-16 68 views
3

日志库或方法,你会推荐这种情况是什么:托管/非托管应用程序的良好日志记录库?

  • 我们希望能够从托管和非托管代码
  • 日志两个非托管代码,执行不应该越过回托管代码,因为这可能会导致我们的非托管线程在垃圾回收期间被“捕获”。
  • 性能是一个问题

NLog提供了一个“C” API,但在其管理的实施方面实现它。

许多C日志库(rlog,glog)都依赖于宏+预处理,并且无法用.NET进行大量修改。

我想我正在寻找一些本机/非托管日志核心,但也有一个像样的.NET托管api。这是否存在?如果不存在,最接近的是什么?

后续 - 感谢提及log4net的回复。我认为Log4Net和NLog在一个纯粹的托管应用程序中都能正常工作,但-...我被要求构建的应用程序在后台线程上有非托管I/O,绝对不能被垃圾回收站阻止。如果非托管C++代码必须调用“up”进入托管日志记录器,那么在发生垃圾回收时,它有可能被冻结200或甚至2000毫秒。这就是为什么我在寻找一个不受管理的图书馆。 - 戴夫

回答

1

Pantheios可能会满足您的要求。它是开源的。

1

你看过log4net

我不确定核心是非托管还是托管,但我已经看到它在几个.NET项目中使用。

+0

它是用C#编写的,很好管理。 – 2009-01-18 02:44:42

1

我已经在我的C#和VB .Net项目中使用了相当多的log4net。在C++中没有使用它,因为自从.NET开始我没有完成C++ .Net & Java几年前成为我的主要编程环境。但使用log4j和log4net相当多,我可以证明它们的性能和易用性。

链接

log4cxx日志记录C++
log4net日志记录对于.NET

+0

谢谢 - 我会看看log4cxx – 2009-01-18 03:19:18

0

你能以某种方式暴露一个非托管方法到你的托管.NET代码,所有的日志实际上是从非托管端处理的吗?

我已经使用C++的boost库,他们为我工作得很好。