混合log4cxx和log4net

时间:2008-10-21 12:21:44

标签: log4net log4cxx

我有一个c ++应用程序,它使用log4cxx(RollingFile appender)登录到某个文件。我想同时从另一个用c#编写的模块登录到同一个文件;所以我配置log4net使用相同的文件,但我无法获取新消息。如果我停用c ++日志记录,我可以看到c#消息。所以我认为这是一个锁定问题,并寻找一个配置选项告诉log4cxx不要锁定文件。我进入了log4net的MinimalLock模型,但在log4cxx中找不到任何东西......有人知道它是否可以完成,以及如何完成?

提前感谢,

Ernesto Cullen

2 个答案:

答案 0 :(得分:4)

我认为无论您使用什么配置,只要您尝试将两个不同的进程登录到同一文件,就可能遇到并发和争用问题。

你应该考虑从两个进程发送日志事件到第三个集中位置 - 看看log4net中的RemotingAppender,我假设log4cxx有类似的东西。

答案 1 :(得分:1)

即使问题很老(并标记为已回答),您可能已经完成了项目:

log4net和log4cxx是不同的日志记录框架,因此您无法将它们配置为写入同一文件。只有一个framworks将文件打开以供写入,以先到者为准。

我在类似的情况下(使用log4net自定义日志记录新的c#模块的遗留c ++应用程序)所做的是create a custom log4net appender,它将跟踪转发到旧的日志记录框架中。在我参与的项目中,旧的C ++代码有一个Windows COM接口,用于编写自定义appender使用的日志消息。

另一种方法是使用C ++ / CLI创建自定义appender。