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