смешивание log4cxx и log4net - PullRequest
       33

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

7 голосов
/ 21 октября 2008

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

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

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

Ответы [ 2 ]

4 голосов
/ 21 октября 2008

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

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

1 голос
/ 17 февраля 2009

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

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

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

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

...