为速度关键系统设计跟踪/日志

时间:2013-03-19 11:53:11

标签: c++ design-patterns logging architecture

假设我们拥有速度至关重要的系统(例如统计/分析,套接字编程等),我们如何设计跟踪和日志。

更具体地说,日志和跟踪通常会降低性能(即使我们有关闭机制或详细的扩展机制)。在这种情况下,是否有关于如何“放置”日志/跟踪的参考指南,以便在问题发生时(特别是在生产现场)开发人员/后期制作团队能够确定实际问题。

PS:我来自后台,这些应用程序是用C / C ++开发的(在Linux上运行)

1 个答案:

答案 0 :(得分:1)

您可以在缓冲区中累积日志,您可以使用Google Protocol Buffers来描述和实施。您可以定期使用不同的线程(每5分钟)将此缓冲区清空到磁盘或通过UNIX domain socket(或其他Linux IPC mechanisms)将其发送到监听并将其写入持久数据库的守护程序或只是写入他们到磁盘。

如果您不想在生成日志的计算机上点击磁盘,可以通过regular socket将它们发送到另一台计算机并将其写入该计算机上的磁盘。

如果要聚合来自多台计算机的日志,请考虑使用0MQCrossRoads作为消息队列,将日志通过网络传递到持久存储它们的计算机。您可以找到有关using 0MQ in conjuction with Google Protocol Buffers here的一些信息。