Пользовательская регистрация для выполнения в режиме DEBUG для приложения C на Linux
Я хочу понять, как разработать приложение (только C) для Linux, чтобы я мог получить файлы журнала, сгенерированные для него в режиме отладки. Syslog - это демон, и сообщения журнала, зарегистрированные нашим приложением, смешиваются с другими сообщениями. Я хочу, чтобы пользовательский файл журнала (но не тот же журнал, что системный журнал, но специфичный для этого приложения и может быть один и тот же файл каждый раз или другой для каждого выполнения).
Я специально прошу режим DEBUG, чтобы сузить вопрос, но в идеале я хочу реализовать 3 режима выполнения: режим LOG включен (не отладка), режим LOG отключен (не режим отладки), режим DEBUG (журнал будет создаваться в этом режиме дефолт).
1 ответ
Для этого нет интерфейса библиотеки, если это то, что вы ищете.
Ваше приложение должно будет открыть сам файл журнала, а затем вы можете определить набор функций для входа в систему как "ошибка", "предупреждение", "информация", "отладка" и т. Д.
Вы также захотите иметь какой-то метод, чтобы периодически свернуть ваши файлы журнала.
Если вы хотите использовать размер на основе прокатки, вы можете использовать fprintf
распечатать в журнал, а затем захватить возвращаемое значение, чтобы получить количество записанных байтов. Затем вы можете добавить это значение к счетчику и посмотреть, достигли ли вы порогового значения размера. Если вместо этого вы хотите прокатку на основе даты, вы можете установить время следующего броска, а затем проверить, наступило ли текущее время после этого времени.
Когда вы достигнете критериев прокрутки, вы закроете текущий файл журнала, переименуете этот файл (вместе со старыми файлами, если это будет необходимо), а затем откройте новый файл журнала.
Чтобы сохранить определенное количество файлов, скажем, n
файлы журналов, сначала удалите logfile.n
затем переименуйте logfile.n-1
в logfile.n
, logfile.n-2
в logfile.n-1
и т. д., пока вы не получите самый последний файл, который вы переименовали из logfile
в logfile.1
,
Для скользящей даты вам нужно переименовать только самый последний файл журнала из logfile
в logfile.YYYYMMDD
если вы хотите ежедневно кататься, logfile.YYYYMMDD_HH
если ты хочешь ежечасное катание и так далее.