Есть ли библиотека журналов для C? (например, log4j для C)

Я давно работаю на Java, и мне было предложено использовать библиотеку log4j для журналов. Это замечательно, и теперь, когда я перехожу на C, я бы хотел найти, есть ли подобная библиотека для журналов на этом языке.

    До сих пор я знаю следующие библиотеки для ведения журнала: log4c, sclog4c, syslog, zlog.

    log4c

    log4c был изобретен как Log4J для C. Если вы специально ищете «что-то вроде Log4J», потому что вы хотите, чтобы он был как «Log4J», это, скорее всего, то, что вы ищете.

    связи

    sclog4c

    sclog4c был изобретен таким же простым, как наиболее часто используемые функции java.util.logging – как можно более простым. Если вы ищете «что-то вроде Log4J», потому что вы хотите, чтобы он был как можно более малым и простым, это, скорее всего, то, что вы ищете.

    связи

    системный журнал

    syslog был первоначально разработан Эриком Олманом как часть sendmail и стал стандартом defacto для регистрации демона / сервера в средах POSIX. Это клиент-сервер, основанный, как правило, демон, который хочет, чтобы что-то было зарегистрировано, отправит данные журнала в syslogd, прослушивая порт UDP 514. Если вы специально ищете «что-то вроде Log4J», потому что вы действительно хотите зарегистрировать демона или сервером, это, скорее всего, то, что вы ищете.

    связи

    zlog

    Этот был изобретен как log4c, просто – согласно его описанию – меньше и более гибкий в одно и то же время.

    связи

    Разнообразный

    Сила против Lean

    Из-за разных способов, как C-ссылки, мыслит и работает, я бы не искал фреймворка регистрации, который является мощным в общем случае – в отличие от Java. Если вы собираетесь использовать «полномасштабные настольные приложения» и более того, регистрация с помощью мощных инфраструктур, таких как Java, безусловно, является хорошим способом. Если вы используете инструменты командной строки или аналогичные, я уверен, что более четкая структура лучше – зачем вы хотите зависеть от lib2xml только ради ведения журнала …

    скорость

    В случае, если скорость соответственно. не тратя время на какие-то вопросы, вы ищете структуру ведения журнала, которая использует macros для оценки уровня журнала до того, как будут оценены другие аргументы.

    Недостатком является то, что вы не можете вызывать процедуру журнала с аргументами, которые имеют побочные эффекты. Но в любом случае это не должно быть прецедентом. Было бы удивительно, если бы заявления журнала не были неосведомлены из-за наличия побочных эффектов.

    Поверхность заключается в том, что операторы журналов в такой структуре добавляют так мало циклов, что их почти нет – просто доступ к глобальной, проверке и условной ветке, пропуская остальную часть кода журнала – 2 инструкции, 1 цикл в лучший вариант для многих современных процессоров.

    отказ

    Я автор sclog4c.

    Существует библиотека log4c C, которая имитирует библиотеку Java log4j. Из документации log4c:

    Он моделируется после того, как библиотека Log for Java остается как можно ближе к их API, насколько это разумно.

    Другим вариантом является zf_log :

    • Ведение журнала отладки сводится к no-op в assemblyх выпусков (скомпилировано)
    • Аргументы не оцениваются, когда сообщение не регистрируется
    • Предупреждение «неиспользуемые» для переменных, используемых только в операторах журнала
    • Регистрировать область памяти как HEX и ASCII
    • Дополнительная встроенная поддержка журнала Android и системного журнала Apple (iOS, OS X)
    • Пользовательские функции вывода (файл, syslog и т. Д.)

    Например, это приведет к выводу сообщения журнала INFO:

     ZF_LOGI("Number of arguments: %i", argc); 

    Это будет выглядеть так:

     04-29 22:43:20.244 40059 1299 I hello.MAIN main@hello.c:9 Number of arguments: 1 

    Точное представление настраивается и зависит от типа сборки (debug / release).