dubbo 获取application和ip 打印日志,以便排查问题.

来源:互联网 发布:dt大数据梦工厂 spark 编辑:程序博客网 时间:2024/05/16 12:08

tomcat的Request层也需要打印日志目前是哪个Ip和哪个Flag. 其他日志都打印在然后按分钟切割日志.

  A. provider filter中 增加 1.请求方应用名 2.请求方ip
  B. consumer filter里增加 1. 提供方应用名 2.提供方ip

这样便于排查定位线上问题.

(1) 服务消费方

dubbo 获取application和ip 打印日志,以便排查问题.. 让对方有针对的去具体某个机器上去排查.
xxxService.xxx();// 远程调用
booleanisConsumerSide = RpcContext.getContext().isConsumerSide(); // 本端是否为消费端,这里会返回true
String serverIP = RpcContext.getContext().getRemoteHost(); // 获取当前线程最后一次调用的提供方IP地址
String application = RpcContext.getContext().getUrl().getParameter("application");// 获取当前服务配置信息(笔者注:为consumer,无法获取provider的application地址),所有配置信息都将转换为URL的参数
// ...
yyyService.yyy();// 注意:每发起RPC调用,上下文状态会变化
// ...

(2) 服务提供方

publicclassXxxServiceImplimplementsXxxService {
 
    publicvoidxxx() { // 服务方法实现
        booleanisProviderSide = RpcContext.getContext().isProviderSide(); // 本端是否为提供端,这里会返回true
        String clientIP = RpcContext.getContext().getRemoteHost(); // 获取调用方IP地址
        String application = RpcContext.getContext().getUrl().getParameter("application");// 获取当前服务配置信息(笔者注:provider还是consumer的未知,未验证!),所有配置信息都将转换为URL的参数
        // ...
        yyyService.yyy();// 注意:每发起RPC调用,上下文状态会变化
        booleanisProviderSide = RpcContext.getContext().isProviderSide(); // 此时本端变成消费端,这里会返回false
        // ...
    }
 
}
1 0
原创粉丝点击