2008-10-21 4 views
7

У меня есть приложение C++, которое регистрируется в каком-то файле, используя log4cxx (приложение RollingFile). Я хочу войти в тот же файл, в то же время, из другого модуля, написанного на C#; поэтому я настроил log4net для использования того же файла, но я не могу получить новые сообщения. Если я деактивирую ведение C++, я могу видеть сообщения C#. Поэтому я думаю, что это проблема блокировки, и искал вариант конфигурации, чтобы сообщить log4cxx, чтобы он не блокировал файл. Я пришел в модель MinimalLock для log4net, но ничего не смог найти в log4cxx ... кто-нибудь знает, можно ли это сделать и как?mix log4cxx и log4net

заранее спасибо,

Эрнесто Cullen

ответ

4

Я думаю, что вы можете столкнуться с параллелизмом и раздора проблем, независимо от того, какую конфигурацию вы используете до тех пор, как вы пытаетесь иметь два различных процесса входа в то же файл.

Вы должны заглянуть в отправку событий журнала из обоих процессов в третье централизованное местоположение - посмотрите на RemotingAppender в log4net, я полагаю, что log4cxx имеет нечто похожее.

1

Даже если вопрос довольно старый (и помечено как ответил), и вы, вероятно, уже закончил свой проект:

log4net и log4cxx различны лесозаготовительных framworks, которые не знают друг друга, так что вы можете 't настроить их для записи в один и тот же файл. Только один из фреймворков будет иметь файл, открытый для записи, в зависимости от того, что было раньше.

То, что я сделал в аналогичной ситуации (устаревшее приложение C++ с пользовательским протоколированием нового модуля C# с использованием log4net), является create a custom log4net appender, которое пересылает следы в старую структуру ведения журнала. В проекте, в котором я участвовал, старый код на C++ имел интерфейс COM для Windows для записи сообщений журнала, которые использовался пользовательским приложением.

Другой способ - использовать C++/CLI для создания пользовательского приложения.