tomcat的Request层也需要打印日志目前是哪个Ip和哪个Flag. 其他日志都打印在然后按分钟切割日志.
A. provider filter中 增加 1.请求方应用名 2.请求方ip
B. consumer filter里增加 1. 提供方应用名 2.提供方ip
B. consumer filter里增加 1. 提供方应用名 2.提供方ip
这样便于排查定位线上问题.
(1) 服务消费方
dubbo 获取application和ip 打印日志,以便排查问题.. 让对方有针对的去具体某个机器上去排查.
xxxService.xxx();
// 远程调用
boolean
isConsumerSide = 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) 服务提供方
public
class
XxxServiceImpl
implements
XxxService {
public
void
xxx() {
// 服务方法实现
boolean
isProviderSide = RpcContext.getContext().isProviderSide();
// 本端是否为提供端,这里会返回true
String clientIP = RpcContext.getContext().getRemoteHost();
// 获取调用方IP地址
String application = RpcContext.getContext().getUrl().getParameter(
"application"
);
// 获取当前服务配置信息(笔者注:provider还是consumer的未知,未验证!),所有配置信息都将转换为URL的参数
// ...
yyyService.yyy();
// 注意:每发起RPC调用,上下文状态会变化
boolean
isProviderSide = RpcContext.getContext().isProviderSide();
// 此时本端变成消费端,这里会返回false
// ...
}
}
|