Хранение логов / сообщений об ошибках программирования на 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);
}
Другие вопросы по тегам