Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Логгирование в C++. Выбор библиотеки.


Автор: Zerstroer 10.7.2012, 16:20
Здравствуйте!
Встала необходимость реализовать в программе систему логгирования. Решил не вывелосипедиваться, а использовать что-нибудь готовое.
Требования к библиотеке: потокобезопастность, ротация логов, а самое главное - документация и поддержка. Желательно, что бы тут на форуме водились люди, с этой библиотекой работавшие и способные помочь советом.
Ограничения: библиотека должна входить в стабильную ветку репозитория Debian.
В общем, после гугления нашлись следующие кандидаты:
  •  log4cpp
  •  log4cxx
  •  log4cplus
  •  google-glog
  •  boost-log
  •  pantheios
  •  log4c
из них отпадают, за отсутствием в стабильном репозитории log4cplus, boost-log, pantheios.
В итоге, получаю, рядом привожу ссылку на официальный ресурс, и дату выхода крайней версии (по информации на оф.ресурсе) :
  •  log4cpp    http://log4cpp.sourceforge.net/    дата последнего редактирования последней версии 2012-04-27, сама версия вышла в 2002
  •  log4cxx     http://logging.apache.org/log4cxx/    2008-04-03
  •  log4cplus
  •  google-glog    http://code.google.com/p/google-glog/    2012-01-12
  •  boost-log
  •  pantheios
  •  log4c    http://log4c.sourceforge.net/index.html    вроде 2007...
Из названий очевидно, что log4* - пошли от удачной Java-библиотеки log4j. 

В общем вопрос -из приведенного списка лучше? 

Субъективные мнения к рассмотрению принимаются. 
Я действительно не знаю, что выбрать и на что смотреть. Вкратце для себя сделал небольшие выводы:
1. log4cxx - вроде как находится под крылом Apache.
2. google-glog - не смог найти толком документации.
Но, для обоснованного выбора - этих тезисов мало.

Автор: borisbn 10.7.2012, 20:32
Цитата(Zerstroer @  10.7.2012,  16:20 Найти цитируемый пост)
Требования к библиотеке: потокобезопастность, ротация логов

не очень понял, что такое "ротация логов", но при беглом взгляде гугловая библиотека потоконебезопасна.

Автор: feodorv 10.7.2012, 23:51
Цитата(borisbn @  10.7.2012,  21:32 Найти цитируемый пост)
не очень понял, что такое "ротация логов"

Это когда по достижении какого-то лимита (по объёму или по дате) меняется файл лога.
Так, можно логгироваться посуточно, автоматически удаляя старые (недельной или месячной давности) файлы логов.

Автор: Zerstroer 11.7.2012, 05:57
Цитата(borisbn @  10.7.2012,  18:32 Найти цитируемый пост)
не очень понял, что такое "ротация логов", но при беглом взгляде гугловая библиотека потоконебезопасна. 

feodorv написал верно - ротация логов, это запись лога в новый файл, при достижении определенного размера и удаление старых файлов, при достижении определенного суммарного размера.
google-glog так же отпадает, так как ротация файлов там, как раз таки, не предусмотрена.
Остаются 2 форка от log4j - log4cxx и log4cpp (и еще, может быть log4c). Один из них (log4cxx) - под крылом Apache, а второй (log4cpp), вроде бы, полностью копирует интерфейс log4j. 

Автор: Zerstroer 11.7.2012, 22:36
Остановился на log4cpp. Библиотека и так покрыта паутиной и плесенью, однако в моем любимом Debian, в стабильной ветке оказалась не самая последняя версия.
Проверил работоспособность. Про потокобезопасность и утечки памяти ничего сказать не могу, однако обнаружилась успешно работающая ротация файлов, что радует.
Библиотека использует для работы внешний конфигурационный файл (по крайней мере в примерах везде он используется). Ищу возможность работы БЕЗ этого конфига.

Автор: Zerstroer 12.7.2012, 20:52
Разобрался и написал что хотел при помощи библиотеки log4cpp. Могу сварганить небольшую how-to-шечку. Нужно ли?
Вопрос закрыт. 

Автор: boostcoder 12.7.2012, 20:56
Цитата(Zerstroer @  12.7.2012,  20:52 Найти цитируемый пост)
Нужно ли?

давай.
любопытно посмотреть, как оно юзается.

Автор: Zerstroer 12.7.2012, 21:03
Цитата(boostcoder @  12.7.2012,  18:56 Найти цитируемый пост)
давай.
любопытно посмотреть, как оно юзается. 

Хорошо, как мануал напишу, обращусь к вам с вопросом, как и куда его выложить. Постараюсь побыстрее.

Автор: EvilsInterrupt 13.7.2012, 17:48
>> boost-log
Под этим рассматривали творение Семачева? http://boost-log.sourceforge.net/libs/log/doc/html/index.html или http://torjo.com/log2/doc/html/index.html ?

>>Ищу возможность работы БЕЗ этого конфига.
Насколько понимаю сейчас чуть ли не любая более менее приличная библиотека логирования позволяет работать как согласно конфигу, так и согласно рантайм-заданным настройкам.

Для себя же ищу нечто похожее Python-модулю logging . Очень удобный интерфейс у этого модуля. На С++ как правило вижу награмождение библиотек и при использовании множество макросов, а функциональности и половины нету (((

Сам же пока останавливаюсь на Boost.Log, его пока почему-то все еще никак в Boost не включат, но уже достаточно много народу использует и это радует

Автор: Zerstroer 16.7.2012, 13:47
EvilsInterrupt, какое именно из творений Семачева я рассматривал - я сказать не могу, так как исключил из конкурса после того, как обнаружил, что в boost имеющийся в стабильном репозитории Debian, он не включен.
Log4cpp - функциональность и синтаксис мне понравились, как раз таки тем, что макросы там совершенно не обязательны, синтаксис эдакий Java-ООП-style и функциональность меня в полной мере удовлетворившая.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)