Ищу библиотеку логгирования для C++.
Чего хочется:
- Компактного и красивого логгирования вроде
//в принципе, можно сделать свой макрос
LOG(warn) << "This code sucks!"
- Опциональная поддержка синтаксиса printf.
- Ротация лог-файлов по размеру и/или по количеству.
- Одновременный вывод в файл и в stdout.
- Потокобезопасность.
Я уже смотрел на:
- Boost.Log - синтаксис настройки сложный и неприятный, но это полбеды. Вторая проблема - это boost::shared_ptr, я пишу на C++14 и у меня уже есть std::shared_ptr и прочие, но буст упорно хочет только собственные поинтеры. Фу.
- Easylogging++ https://github.com/easylogging/easyloggingpp Либа почти прекрасна, кроме того, что она - это единственный хэдер размером в 7 тыс строк! Разобраться в этой каше сложно. А ещё и тащить за собой надо, и обновлять вовремя. Отдельные динамические библиотеки поприятнее будут с точки зрения сопровождения.
- log4cxx, log4c, log4cplus - пытаются сделать одну и ту же вещь, но как-то топорно, и умеют немногое.
- log4cpp - это ужасно:
root << log4cpp::Priority::ERROR << "Streamed root error";
И ещё вагон и маленькая тележка других либ, которые используются в полтора проекта.
Что делать?