托管/非托管应用程序的良好日志库?

时间:2009-01-16 18:55:51

标签: c# .net c++ logging

对于这种情况,您会推荐哪种日志库或方法:

  • 我们希望能够从托管代码和非托管代码中记录
  • 对于非托管代码,实现不应该交叉回托管代码,因为这可能导致我们的非托管线程在垃圾回收期间被“捕获”。
  • 表现是一个问题

NLog提供了一个“C”api,但是在托管实现方面实现了它。

那里的许多C日志库(rlogglog)依赖于宏+预处理,并且不适合用.NET包装而不进行大量修改。

我想我正在寻找具有本机/非托管日志核心的东西,但也是一个不错的.NET托管API。这存在吗?如果这不存在,最接近的是什么?

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

4 个答案:

答案 0 :(得分:1)

你看过log4net了吗?

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

答案 1 :(得分:1)

我在C#和VB .Net项目中使用了很多log4net。因为我没有使用C ++,所以没有在C ++中使用它.Net&几年前Java成为我的主要编程环境。但是我已经使用了log4j和log4net,我可以保证它们的性能和易用性。

链接

log4cxx 登录C ++
log4net 登录.Net

答案 2 :(得分:1)

Pantheios可能符合您的要求。它是开源的。

答案 3 :(得分:0)

您能以某种方式向托管的.NET代码公开非托管方法,以便所有日志记录实际上都是从非托管端处理的吗?

我已经使用了C ++的boost库,但它们对我来说效果很好。