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

提前感谢,

Ernesto Cullen

有帮助吗?

解决方案

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

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

其他提示

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top