Вы можете попробовать strtr .
Если задано два аргумента, вторым должен быть массив в виде массива ('from' => 'to', ...). Возвращаемым значением является строка, в которой все вхождения ключей массива были заменены соответствующими значениями. Самые длинные ключи будут опробованы первыми. Как только подстрока была заменена, ее новое значение не будет снова найдено .
blockquote>$content = strtr($content, $replacement);
Я думаю, что Вы могли бы столкнуться с параллелизмом и состязательными проблемами, какую конфигурацию Вы используете, пока Вы пытаетесь иметь два других журнала процессов в тот же файл.
Необходимо изучить передающие события журнала от обоих процессов до одной трети, централизованное местоположение - смотрят на RemotingAppender в log4net, я предполагаю, что log4cxx имеет что-то подобное.
Даже если вопрос довольно стар (и отмеченный, как отвечено), и Вы, вероятно, уже закончены со своим проектом:
log4net и log4cxx являются отличным входом framworks, которые не знают друг о друге так, Вы не можете настроить их для записи в тот же файл. Только один из framworks будет иметь файл открытым для записи, какой бы ни было первым.
Что я сделал в аналогичной ситуации (приложение C++ прежней версии с пользовательским входом новый c# модуль с помощью log4net), создают пользовательский log4net appender, который вперед прослеживает в старую платформу журналирования. В проекте, где я был вовлечен, старый код C++ имел Windows COM Interface для записи сообщений журнала, которые использовал пользовательский appender.
Иначе использовал бы C++ / CLI для создания пользовательского appender.