2008-10-21 70 views
7

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

在此先感谢,

埃内斯托·卡伦

回答

4

我认为你可能要尝试有两种不同的工艺运行到并发性和争用问题,无论你只要用什么样的配置登录到同一文件。

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

1

即使这个问题是很老(和标记为回答),你很可能已经与您的项目完成:

log4net的和log4cxx是不同的记录framworks不知道对方的,所以你可以将它们配置为写入相同的文件。只有其中一个框架文件可以提交文件,以先到者为准。

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

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