Я давно работаю на Java, и мне было предложено использовать библиотеку log4j для журналов. Это замечательно, и теперь, когда я перехожу на C, я бы хотел найти, есть ли подобная библиотека для журналов на этом языке.
До сих пор я знаю следующие библиотеки для ведения журнала: log4c, sclog4c, syslog, zlog.
log4c был изобретен как Log4J для C. Если вы специально ищете «что-то вроде Log4J», потому что вы хотите, чтобы он был как «Log4J», это, скорее всего, то, что вы ищете.
sclog4c был изобретен таким же простым, как наиболее часто используемые функции java.util.logging
– как можно более простым. Если вы ищете «что-то вроде Log4J», потому что вы хотите, чтобы он был как можно более малым и простым, это, скорее всего, то, что вы ищете.
syslog был первоначально разработан Эриком Олманом как часть sendmail и стал стандартом defacto для регистрации демона / сервера в средах POSIX. Это клиент-сервер, основанный, как правило, демон, который хочет, чтобы что-то было зарегистрировано, отправит данные журнала в syslogd, прослушивая порт UDP 514. Если вы специально ищете «что-то вроде Log4J», потому что вы действительно хотите зарегистрировать демона или сервером, это, скорее всего, то, что вы ищете.
Этот был изобретен как log4c, просто – согласно его описанию – меньше и более гибкий в одно и то же время.
Из-за разных способов, как C-ссылки, мыслит и работает, я бы не искал фреймворка регистрации, который является мощным в общем случае – в отличие от Java. Если вы собираетесь использовать «полномасштабные настольные приложения» и более того, регистрация с помощью мощных инфраструктур, таких как Java, безусловно, является хорошим способом. Если вы используете инструменты командной строки или аналогичные, я уверен, что более четкая структура лучше – зачем вы хотите зависеть от lib2xml только ради ведения журнала …
В случае, если скорость соответственно. не тратя время на какие-то вопросы, вы ищете структуру ведения журнала, которая использует macros для оценки уровня журнала до того, как будут оценены другие аргументы.
Недостатком является то, что вы не можете вызывать процедуру журнала с аргументами, которые имеют побочные эффекты. Но в любом случае это не должно быть прецедентом. Было бы удивительно, если бы заявления журнала не были неосведомлены из-за наличия побочных эффектов.
Поверхность заключается в том, что операторы журналов в такой структуре добавляют так мало циклов, что их почти нет – просто доступ к глобальной, проверке и условной ветке, пропуская остальную часть кода журнала – 2 инструкции, 1 цикл в лучший вариант для многих современных процессоров.
Я автор sclog4c.
Существует библиотека log4c C, которая имитирует библиотеку Java log4j. Из документации log4c:
Он моделируется после того, как библиотека Log for Java остается как можно ближе к их API, насколько это разумно.
Другим вариантом является zf_log :
Например, это приведет к выводу сообщения журнала 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).