c - 记录到屏幕和文件

标签 c logging

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

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

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

最佳答案

一些提示/概念:

  1. 使用日志级别参数或函数名称隐含的参数生成日志条目的机制。
  2. 通常是一个 printf 风格的格式字符串,后跟参数。
  3. 一种数据结构,用于从生成消息的一个或多个线程收集消息。
  4. 某种形式的时间戳。
  5. 处理收集到的消息并生成输出的后端线程。您可以在此处配置显示和/或写入文件的级别。
  6. vsnprintf() 是一个参数数量可变的函数,常用于后端处理部分。

通常的想法是将字符串处理推迟到后台线程,这样生成日志的实际工作线程就不会在字符串操作上浪费时间。但是,这使得打印变量字符串变得困难,因为它们往往会在后台处理它们时超出范围。所以在这些情况下,数值是首选。如果实时性不是那么重要,您可以通过日志接口(interface)复制字符串,而不是仅仅传递指针和数字参数值。

祝你好运。

关于c - 记录到屏幕和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935986/

相关文章:

c - 将 C 字符串解析为数字和运算符

c - 如何阻止 ENOSYS 的 sem_open() 失败?

c - 与 gotoxy 类似的功能并在 HP TANDEM - GUARDIAN 上打印一行

macos - AppleScript 编辑器,将消息写入 "Result"窗口

c - 套接字服务器不接受来自其他计算机的客户端(连接失败 : 10060)

c# - 使用调用者信息属性是否会影响性能?

Javascript 日志记录

c# - Microsoft.Extensions.Logging 记录器包装器的实现和使用

logging - 使用 Elmah 记录客户端错误

c - 如何在 Linux 上用 C 将 time_t 转换为类似 "Fri, 12 Nov 2010 16:02:54 GMT "的内容