在C编程上存储日志/错误消息

时间:2013-04-20 03:13:41

标签: c linux error-handling posix stderr

发生错误时,我希望我的C代码在退出程序之前存储错误。建议将stderr存储到文件(例如/home/logs.txt),还是建议使用不同的方法来保存日志/错误报告(考虑编程环境为{{1} }})。例如,对于下面的代码,我如何应用该方法来存储日志/错误消息Linux/home/log.txt

/home/log

谢谢。

2 个答案:

答案 0 :(得分:3)

如果始终使用stderr打印出所有错误消息,那么您可以将输出重定向到特定文件。

$ program 2>~/logs.txt

要获得更好的日志记录工具,您可以使用:

答案 1 :(得分:0)

如果要存储错误,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);
}