2010-05-29 119 views
3

什么设计模式可能适用于日志记录?这种情况通常使用什么?任何好的教程?登录屏幕和文件

我正在编写一个使用C89和gcc 4.4.4的客户端 - 服务器应用程序。我现在需要实现一些日志记录功能,它将在屏幕上显示日志消息以及登录到文件。但是,我不想显示所有日志消息(警告,错误,严重,不可恢复,调试等)。也许我可以设置,这样它将只显示错误,没有别的。例如,用户可能对屏幕输出中的调试消息不感兴趣。

回答

4

一些提示/概念:

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

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

祝你好运。