Хранение логов / сообщений об ошибках программирования на C
Когда происходит ошибка, я хотел бы, чтобы мой код на C сохранил ошибку до выхода из программы. Рекомендуется ли хранить stderr
в файл (например, /home/logs.txt) или будет рекомендовано использовать другой метод для ведения журналов / отчетов об ошибках (учитывая, что среда программирования Linux
). Например, для кода ниже, как я мог бы применить метод для хранения журналов / сообщений об ошибках на /home/log.txt
или же /home/log
FILE *fp1;
fp1 = fopen("/sys/class/gpio/export","w");
if(fp1 == NULL){
fprintf(stderr, "errno:%s - opening GPIO136 failed - line 739\n ", strerror(errno));
close(fp1);
exit(1);
}
Спасибо.
2 ответа
Если stderr
всегда используется, чтобы распечатать все ваши сообщения об ошибках, так что вы можете перенаправить вывод в определенный файл.
$ program 2>~/logs.txt
Для лучшего инструмента регистрации вы можете использовать:
syslog
стандартная функция.log4c
библиотека.
Если вы хотите сохранить ошибку, stderr, вероятно, не лучший выбор, потому что вам нужно будет передавать stderr в файл при каждом запуске программы.
Если вы хотите записать в /home/log.txt, откройте на него указатель FILE и напишите с помощью fprintf так же, как вы пытались открыть /sys/class/gpio/export и записать в него вместо stderr. Также не забудьте открыть файл журнала в режиме добавления.
FILE *fp1;
fp1 = fopen("/sys/class/gpio/export","w");
if(fp1 == NULL){
FILE *fpErr = fopen("/home/log.txt", "a");
if(fpErr != NULL)
fprintf(fpErr, "errno:%s - opening GPIO136 failed - line 739\n ", strerror(errno));
close(fpErr);
close(fp1);
exit(1);
}