Я знаю много библиотек журналов, но не много их тестировал. (GoogleLog, Pantheios, грядущий импульс :: библиотека журналов ...)
В играх, особенно в удаленных многопользовательских и многопоточных играх, ведение журнала является жизненно важным для отладки, даже если вы удалите все журналы в конце.
Допустим, я делаю компьютерную (не консольную) игру, в которой нужны логи (многопользовательские, многопоточные и / или многопроцессные), и у меня есть веские причины искать библиотеку для логов (например, у меня нет времени или я не уверен в моей способности написать один правильно для моего случая).
Предполагая, что мне нужно:
- производительность
- простота использования (позволяет потоковое или форматирование или что-то в этом роде)
- надежный (не протекать и не разбиться!)
- кроссплатформенный (по крайней мере, Windows, MacOSX, Linux / Ubuntu)
Какую библиотеку журналов вы бы порекомендовали?
В настоящее время я считаю, что boost :: log является наиболее гибким (вы даже можете войти в систему удаленно!), Но у него не очень хорошее обновление производительности : оно предназначено для высокой производительности, но еще не выпущено. Часто упоминают о Pantheios, но у меня нет точек сравнения производительности и использования. Я давно использовал свою собственную библиотеку, но я знаю, что она не справляется с многопоточностью, поэтому это большая проблема, даже если она достаточно быстра. Google Log кажется интересным, мне просто нужно протестировать его, но если вы уже сравнили эти библиотеки и многое другое, ваш совет может быть полезным.
Игры часто требуют высокой производительности, но сложны в отладке, поэтому было бы хорошо знать библиотеки журналов, которые в нашем конкретном случае имеют явные преимущества.
Ответы:
ведение журнала с использованием сокета (может быть достаточно любой оболочки) + веб-браузер websocket => наиболее универсальный, ненавязчивый инструмент ведения журналов, который отработает часы отладки и позволит избежать неприятных ощущений .
Теперь бонус:
и многое другое вне логирования:
(почти все вышеперечисленное можно сделать с помощью флеш-сокетов, сохранив возможности базы данных)
Теперь я знаю, что кажется, это немного долго настраивать. Но это действительно выигрыш времени в длинном проекте, в сложной ситуации отладки (например, в играх). Это самая мощная вещь, которую я использовал со времен отладчиков ...
Примечание 1: единственный недостаток => двойная проверка побочного эффекта при отладке игрового сетевого кода (влияние на размер буфера сокета, задержку, пропускную способность и т. Д.)
Примечание 2: некоторые веб-сокеты отключены по умолчанию из-за соображений безопасности, проверьте: настройте параметры, чтобы убедиться, что они включены.
источник
Когда дело доходит до производительности, я обнаружил, что templog практически непобедим. Он использует шаблоны выражений для того, чтобы отложить оценку операторов регистрации, пока не будет установлено, что информация будет зарегистрирована вообще. Поскольку вы также можете частично отключить ведение журнала (в зависимости от серьезности, источника и целевой аудитории сообщения журнала), некоторые из этих операторов ведения журнала могут быть удалены компилятором до нуля кода для сборок выпуска. (Я действительно видел, что это случилось с ВК.)
В последнее время с библиотекой почти ничего не было сделано, и другие в SO обнаружили, что в некоторых случаях стволу не хватает, но в компании, в которой я работал, мы нашли парня довольно отзывчивым, а один из моих тогдашних коровников даже получил доступ к коммиту и добавил к нему некоторый код, так что вы можете найти его достойным внимания.
Чтобы перечислить ваши требования:
Лучшее, что я нашел. Особенно его способность исключать сообщения журнала во время компиляции и полностью исключать их из компилятора была очень привлекательной.
Есть классические ужасные сообщения об ошибках компилятора шаблонов-мета, когда вы делаете что-то не так, но когда дело доходит до простоты использования, это
трудно победить.
Однако вам, возможно, придется создать свои собственные приемники журналов (вот куда идут сообщения журналов), так как несколько предварительно упакованных (stderr, file, Windows logging и т. Д.) Не так уж и сложны. Из-за того, что производительность является основной целью, внутренняя сущность всего этого несколько сложна (например, средства форматирования сообщений журнала весьма запутаны с приемниками журналов), но мы справились с этим (я помню, как проходили через него в отладчике, помогающем с этим) и однажды Я понял, что не так уж сложно написать свои собственные средства форматирования сообщений или приемники журналов.
Мы использовали его, не найдя таких серьезных проблем. Там практически нет динамического распределения памяти, поэтому трудно даже представить, что он что-то делает не так. Конечно, мы проводим только реальные испытания в одном продукте.
Когда мы использовали его, мы использовали его в Win32, OSX и нескольких различных дистрибутивах Linux, в том числе в Ubuntu.
Что касается многопоточности: мы не использовали это, но из того, что я помню об архитектуре lib, кажется, вам нужно будет обрабатывать это только в приемниках журналов. ICBWT.
источник
Вы можете рассмотреть библиотеку logog по адресу http://www.logog.org , которая, я думаю, может удовлетворить ваши требования. Предостережение: я написал это.
См. Также ответы других людей по адресу /programming/696321/best-logging-framework-for-native-c .
источник
Вас может заинтересовать набор инструментов Baical :
источник