смешивание log4cxx и log4net

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

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

Эрнесто Каллен


person user25800    schedule 21.10.2008    source источник


Ответы (2)


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

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

person matt b    schedule 21.10.2008

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

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

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

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

person froh42    schedule 16.02.2009