首页 > 解决方案 > 记录所有 Thrift 服务器的请求和响应

问题描述

我有多个 Thrift 服务器正在运行。按照要求的顺序,我想做以下事情:

  1. 如果可能,打印请求方法、请求参数和发出请求的时间。此外,打印给定呼叫的响应时间。
  2. 如果上述方法不可行,只需打印请求方法和响应方法以及场景的时间戳即可。

似乎没有任何简单的方法可以仅为请求/响应实例打开日志记录。请注意,服务器是用 Java 编写/生成的。任何有关如何使这些服务器的日志记录工作的帮助将不胜感激。

谢谢

标签: javaloggingthrift

解决方案


要获得您想要的所有功能,最好的方法可能是简单地包装服务。例如,假设您有一个带有 functionone()和 functiontwo()的服务处理程序,包装服务处理程序将实现相同的接口。然后在包装服务处理程序中,您将执行以下操作:

one() {
  print timestamp, method name and params
  call one() in real service
  print timestamp for call end
} 

...

如果您想为每个客户端生成它们,您甚至可以为包装器创建一个处理器工厂。

或者,您可以实现一个 ServerEventHandler,请参阅: https ://github.com/apache/thrift/blob/master/lib/java/src/org/apache/thrift/server/TServerEventHandler.java

这些也被每个客户端请求调用(通过 processContext 方法),但是在服务器级别获取函数名称和参数将是不平凡的,并且 processContext() 方法仅在调用处理程序之前调用一次,因此获得轮次旅行时间也很棘手。


推荐阅读