Который вход библиотеки для использования для межъязыкового (Java, C++, Python) системы

У меня есть система, где центральный контроллер Java запускает аналитические процессы, которые могут быть записаны в C++, Java или Python (главным образом, они - C++). Все эти процессы в настоящее время работают на том же сервере. К чему являетесь Вы предложениями

  • Создайте центральный журнал, к которому все процессы могут записать в
  • Что, если в будущем я продвигаю некоторые процессы к другому серверу. Как я могу поддерживать распределенный вход?

Спасибо!

11
задан Bob Kaufman 21 May 2010 в 21:51
поделиться

3 ответа

Apache имеет кроссплатформенные библиотеки журналирования , которые позволяют вам входить в журнал с разных языков программирования, используя аналогичные API. К сожалению, у них нет Python API, хотя вы сможете создать его с помощью log4cpp и Boost.Python.

В проекте, над которым я работаю, используется одна из этих библиотек для ведения журнала в базе данных, что позволяет нам «распределенное ведение журнала» с централизованным местом для сообщений журнала. Должен признаться, я не фанат этого. В другом проекте, над которым я работаю, используется одна из этих библиотек для входа в собственную систему ведения журнала.Журнал событий Windows имеет некоторые функции для распределенного ведения журнала, но системный журнал AFAIK - нет.

Хотя у меня нет опыта работы с ним, более подходящим вариантом может быть проект Facebook Scribe . Набор функций соответствует вашим требованиям, включая Python API. К сожалению, он использует Thrift, который не работает для C ++ в Windows (то есть компилятор Thrift генерирует код C ++, который работает только в UNIX). Возможно, вы сможете обойти эту проблему с помощью Cygwin, но я не могу обещать, что этот подход сработает.

1
ответ дан 3 December 2019 в 11:03
поделиться

Я бы рекомендовал использовать родной логгер платформы, которым является syslog на Posix и Event Log на Windows.

Для C++ вы можете использовать родные вызовы платформы.

Я знаю, что Python поставляется с оберткой для syscall на Posix и есть обертки для Event Log в расширении PyWin32. Я предполагаю, что кто-то уже создал обертку для Java.

Обновление

Что касается syslog и нескольких файлов. syslog поддерживает концепцию объектов - с помощью объектов вы можете вести разные журналы в разные файлы. К сожалению, объекты предопределены; хотя есть 8 общих объектов LOG_LOCAL0 - LOG_LOCAL7, вы не можете определить произвольные объекты.

Также обратите внимание, что демон syslog сам решает, куда направлять сообщения журнала для каждого объекта/уровня. Возможно, вам придется изменить конфигурацию вашего демона syslog, чтобы каждый объект отправлялся в отдельный файл.

5
ответ дан 3 December 2019 в 11:03
поделиться

Я бы использовал Apache log4cxx или Apache log4j . Это эффективно. В нем есть иерархии Logger для модульного построения ваших журналов. Это уже давно проверенная технология. В настоящее время существуют приложения для консоли, файлов, компонентов графического интерфейса, удаленных серверов сокетов, регистраторов событий NT и удаленных демонов системного журнала UNIX. Также возможен асинхронный вход.

Как я могу поддерживать распределенное ведение журнала? Например, с добавлением удаленных серверов сокетов.

1
ответ дан 3 December 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: