Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 记录到屏幕和文件_C_Logging - Fatal编程技术网

C 记录到屏幕和文件

C 记录到屏幕和文件,c,logging,C,Logging,什么设计模式可以应用于日志记录?在这种情况下通常使用什么?有好的教程吗 我正在使用C89和GCC4.4.4编写一个客户机-服务器应用程序。我现在需要实现一些日志功能,它将在屏幕上显示日志消息,并将日志记录到文件中 但是,我不想显示所有日志消息(警告、错误、严重、不可恢复、调试等)。也许我可以设置为只显示错误而不显示其他内容。例如,用户可能对屏幕输出上的调试消息不感兴趣。一些提示/概念: 一种生成日志项的机制,该日志项包含日志级别的参数或由函数名暗示的参数 通常是一个printf样式的格式字符串,

什么设计模式可以应用于日志记录?在这种情况下通常使用什么?有好的教程吗

我正在使用C89和GCC4.4.4编写一个客户机-服务器应用程序。我现在需要实现一些日志功能,它将在屏幕上显示日志消息,并将日志记录到文件中

但是,我不想显示所有日志消息(警告、错误、严重、不可恢复、调试等)。也许我可以设置为只显示错误而不显示其他内容。例如,用户可能对屏幕输出上的调试消息不感兴趣。

一些提示/概念:

  • 一种生成日志项的机制,该日志项包含日志级别的参数或由函数名暗示的参数
  • 通常是一个printf样式的格式字符串,后跟参数
  • 从生成消息的一个或多个线程收集消息的数据结构
  • 某种形式的时间戳
  • 处理收集的消息并执行输出生成的后端线程。您可以在此处配置显示和/或写入文件的级别
  • vsnprintf()是一个接受可变数量参数的函数,通常用于后端处理部分
  • 通常的想法是将字符串处理延迟到后台线程,这样生成日志的实际工作线程就不会在字符串操作上浪费时间。但是,这使得打印变量字符串变得困难,因为在后台处理变量字符串时,它们往往会超出范围。因此,在这些情况下,首选数值。如果实时性不是那么重要,那么您可以通过日志接口复制字符串,而不只是传递指针和数值参数值


    祝你好运。

    如果你需要一个设计模式的名称:试试

    也许这一页也有帮助: