即使系统崩溃,也要保持“几乎完整”的日志

时间:2010-08-22 13:00:49

标签: windows logging signals crash fflush

我们有一个在windows和unix上运行的c ++应用程序(控制台)。 此应用程序使用输出文件输出系统调用/打印/等的详细日志文件。 问题在于,在某些情况下,我们可能会在添加新功能后获得信号11/2。

现在,只要发生这种情况,我们就不会从日志文件中获取“几乎完整”的信息来追踪错误/问题的根源,因为当信号11发生时输出文件没有正确关闭。 (它只是部分或零大小)

我们考虑在每个fprintf行打印后添加flush命令。 问:

  1. 这被认为是一个很好的实践吗?
  2. fflush在Windows平台上运行良好吗?
  3. 在系统可能意外崩溃时保留日志文件的任何想法/其他方法?

1 个答案:

答案 0 :(得分:1)

您需要将日志数据不是发送到文件,而是发送到可以在30分钟内创建的外部日志记录应用程序。可以通过套接字或通过管道或使用SendMessage()Windows API(如果您以Windows为目标)发送输出。