dubbo 自定义过滤器,打印接口调用信息
来源:互联网 发布:zank 知乎 编辑:程序博客网 时间:2024/06/03 14:55
dubbo 自定义过滤器,打印接口调用信息
dubbo提供了web filter类似的com.alibaba.dubbo.rpc.Filter,这样,我们可以在dubbo提供的服务提供方和消费方都可以自定义过滤器,从而可以获得方法调用的时间或参数、返回结果及异常信息。我们可以利用log打印出来。而且,这个过滤器机制,也是分布式跟踪系统的一部分。
下面代码实例是一个自定义过滤器例子,获得方法调用的参数、返回结果、执行时间及异常信息的log功能。
public class ElapsedTimeFilter implements Filter {private static Logger log = LoggerFactory.getLogger(ElapsedTimeFilter.class);@Overridepublic Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {long start = System.currentTimeMillis();Result result = invoker.invoke(invocation);long elapsed = System.currentTimeMillis() - start;if (invoker.getUrl() != null) {// log.info("[" +invoker.getInterface() +"] [" + invocation.getMethodName() +"] [" + elapsed +"]" );log.info("[{}], [{}], {}, [{}], [{}], [{}] ", invoker.getInterface(), invocation.getMethodName(), Arrays.toString(invocation.getArguments()), result.getValue(), result.getException(), elapsed);}return result;}}
其实,dubbo内部,也有很多已经实现好的不同功能的过滤器,如:
我们自定义了过滤器,还的按照dubbo spi机制,还得需要配置:
在服务消费方或提供方还需要配上这个过滤器,消费方例子:
<dubbo:consumer id="xx" filter="elapsedTimeFilter" retries="0"/>
具体详见官方文档。
0 0
- dubbo 自定义过滤器,打印接口调用信息
- Swift 自定义打印信息
- dubbo泛化调用 http接口 随意调用dubbo服务
- 用Dubbo+zookeeper 调用java接口程序
- dubbo+zookeeper 简单实现远程接口调用
- zookeeper结合dubbo实现分布式接口调用
- 调用存储过程打印信息
- 打印函数调用栈信息
- dubbo调用链/过滤器链的创建分析
- angularJs自定义过滤器实现手机号信息隐藏
- ARM 使用调试接口输出打印信息
- 自定义Logcat,完全控制打印信息
- Android下打印函数调用栈信息
- Android的调用栈信息打印
- MFC 如何调用打印调试信息函数
- android利用异常打印调用堆栈信息
- Android Java 打印调用堆栈信息
- android打印程序调用堆栈信息
- AndroidUI 引导页面的使用
- Java数据结构与算法之数组排序——选择
- 判断一个树是不是平衡二叉树
- [HDU1000]
- struts2值栈valuestack的内存图及操作
- dubbo 自定义过滤器,打印接口调用信息
- JavaScript显示和隐藏某个div
- C#学习日记04---数据类型 之 整数类型
- QT5 学习之路14---对象模型
- 下载、编译Android源码简明版
- ACM起步
- 三大框架之----struts2之ValueStack存取数据
- struts2+spring+hibernate框架总结(框架分析+环境搭建+实例源码下载)
- HDU2031 进制转换