Настройка библиотеки журналов C ++ - PullRequest
8 голосов
/ 01 февраля 2011

Я уже около 2 недель пытаюсь заставить работать библиотеку журналов.Я пробовал Log4cxx, Log4cpp, log4cplus и boost.log.Проблема не в том, что ничего из этого не работает для меня, а в том, что я не могу понять, как заставить их работать вообще.Я действительно хотел бы использовать log4cxx, так как я работаю с log4j / logback на работе, но я не смог получить ни одну из библиотек, основанных на log4j, для сборки.Мне удалось собрать и использовать библиотеку boost, но boost.log дает мне всевозможные ошибки компоновщика, независимо от того, что я пытаюсь.Если бы кто-нибудь мог направить меня к пошаговому руководству, чтобы заставить работать одну из этих библиотек, я был бы очень благодарен.Кроме того, я использую Eclipse в качестве своей IDE, если это имеет значение.

Ответы [ 4 ]

1 голос
/ 09 октября 2011

Вы когда-нибудь работали? Log4cxx определенно работает на Win7. Может быть, вы могли бы опубликовать некоторые из ваших ошибок сборки. Просто догадываясь, возможно, вы не настроили свой проект eclipse для связи со статической библиотекой log4cxx.

1 голос
/ 09 октября 2011

Boost.Log работает у меня довольно хорошо (Linux и Windows). Это не только библиотека заголовков, есть скомпилированная часть, с которой вам нужно ссылаться. См. Инструкции здесь .

Это также зависит от других, не заголовочных, библиотек Boost:

Библиотека журналов использует несколько других библиотек Boost, которые нуждаются здание тоже. Это Boost.Filesystem, Boost.System, Boost.DateTime, Boost.Thread и Boost.Regex. Обратитесь к их документация для подробных инструкций по процедуре строительства.

В зависимости от вашей платформы могут быть встроенные версии библиотек Boost. В противном случае создать его самостоятельно будет просто, если вы будете следовать инструкциям. Если вы застряли, уточните свой вопрос, где именно вы застряли и что видите.

0 голосов
/ 20 апреля 2016

Мне удалось заставить log4cxx работать, это было сделано в Visual Studios 2013, работающей в ОС Windows 7.

Это то, что я сделал, шаг за шагом:

Загрузите ZIP-архив log4cxx, извлеките его содержимое, http://logging.apache.org/log4cxx/download.html

Скачать ZIP-пакеты apr и apr-util, http://apr.apache.org/download.cgi

Тогда

  1. вручную распакуйте этот zip apr-1.2.11-win32-src.zip ( Извлеченная папка должна иметь имя «apr», если она не переименована вручную она)
  2. вручную распакуйте этот zip apr-util-1.2.10-win32-src.zip ( Извлеченная папка должна иметь имя «apr-util», если это не вручную переименуйте его)
  3. откройте командную строку и выполните следующее: cd настроить apache-log4cxx-0.10.0 (это выполнит configure.bat)

Нам потребуется отключить использование APR ICONV и LDAP. Для этого мы добавим следующие файлы вручную:

  1. Откройте apr-util \ include \ apu.hw. Найдите строку, начинающуюся с «#define» APU_HAVE_APR_ICONV». Измените значение на 0 и сохраните.
  2. Откройте apr-util \ include \ apr_ldap.hw. Найдите строку, начинающуюся с «#Define APR_HAS_LDAP» Измените значение на 0 и сохраните.

Нам нужно собрать log4cxx.dll, для этого конвертировать * .dsw в * .cxproj.

  1. Запустите Visual Studio 2013 и откройте log4cxx.dsw.
  2. VS спросит, хотите ли вы все конвертировать. Просто нажмите Да. В отчете о миграции могут быть некоторые предупреждения, но ничего такого, что должно препятствовать открытию решения.

> Проекты xml, apr и apr-util должны быть успешно собраны.

Если вы попытаетесь скомпилировать проект log4cxx, он будет наиболее скорее всего потерпит неудачу с сотнями ошибок. Это связано с ошибкой в ​​VC ++ который можно обойти.

  1. Переместить все макросы за пределы (над) класса, в котором они находятся. Макрос LOG4CXX_LIST_DEF используется для определения классов. Все макросы, о которых сообщается в ошибке C2252, должны быть удалены из любых классов. это может также включать определения движущихся объектов, которые используются в макросе.
  2. Затем измените все LoggingEvent :: KeySet на KeySet (он больше не вложен в родительский класс)

> После этого проект log4cxx должен скомпилироваться успешно на вашем компьютере.

0 голосов
/ 01 февраля 2011

Я бы порекомендовал Pantheios .При первой загрузке требуется некоторое время, чтобы набрать все - наберите make build test и идите на ланч - и вам нужно выбрать выходные потоки (Pantheios называет их «back end») во время соединения, но для кодирования это действительно простоНапример,

std::string name;
int age;

pantheios::log_DEBUG("name=", name, " age=", pantheios::integer(age));

Он спроектирован с нуля для скорости - возраст не будет преобразован в строку, если не включен уровень "DEBUG" - и надежность - поэтому вы не можете напрямую передавать фундаментальные типы и использовать «вставки» (например, pantheios::integer).См. это недавнее сообщение в блоге от автора Пантеоса для получения дополнительной информации.

...