记录进程的消息交换

时间:2009-08-11 02:36:41

标签: c++ logging

我目前正在使用支持 syslog 等日志记录机制的操作系统。然而,在调试过程时,即找出哪些事件或消息与系统中的其他进程交换了特定进程,这是繁琐的。

任何人都可以建议我采取更好的机制吗?

2 个答案:

答案 0 :(得分:1)

我建议用某种抽象包装你的消息传递机制。然后,您可以将诊断信息放在消息传递层中。我想这是一种某种设计模式。创建一个抽象,其中包括进程之间的连接器和通过连接器发送的消息。如果您的消息抽象包含标识符(例如,GUID),那么您可以记录流经连接器的消息并轻松地通过系统跟踪它们。有关一些想法,请查看C2 architectural style

答案 1 :(得分:1)

我们的部分交换机应用程序使用20+单线程进程来处理事务,每个进程处理一小部分事务处理然后向下一个进程发送请求。最后,最后一个进程回复,并以相反的顺序发回回复消息。

我们的应用程序都将跟踪写入自己的日志文件,这对于诊断问题并不是很有用。因此,跟踪层还会将所有跟踪发送到调试服务器进程,同时当进程发送或接收消息时,此信息将发送到具有该消息的唯一ID的调试服务器。这使调试服务器能够将所有消息连接在一起,使我们能够获得每个事务的系统视图。

显然这是非常耗费资源的,因此默认情况下在繁忙的系统上是关闭的,但是可以打开它并在运行时设置跟踪级别以诊断站点和开发中的问题。