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(); // 本端是否为消费端,这里会返回trueString serverIP = RpcContext.getContext().getRemoteHost(); // 获取当前线程最后一次调用的提供方IP地址String application = RpcContext.getContext().getUrl().getParameter("application");// 获取当前服务配置信息(笔者注:为consumer,无法获取provider的application地址),所有配置信息都将转换为URL的参数// ...yyyService.yyy();// 注意:每发起RPC调用,上下文状态会变化// ... |
(2) 服务提供方
public class XxxServiceImplimplements 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 // ... }} |

本文介绍如何在Dubbo框架中优化服务调用的日志记录,通过在ProviderFilter和ConsumerFilter中增加应用名和IP的记录,提高线上问题排查效率。

1072

被折叠的 条评论
为什么被折叠?



