7

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

提前致谢,

埃内斯托·卡伦

4

2 回答 2

4

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

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

于 2008-10-21T12:38:04.437 回答
1

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

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

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

另一种方法是使用 C++/CLI 创建自定义附加程序。

于 2009-02-16T22:35:00.987 回答