开发者社区 > 云原生 > 正文

Apache Dubbo中dubbogo 3.0.5版本,服务端报错,什么原因?

Apache Dubbo中dubbogo 3.0.5版本,服务端报错,查日志也不打印报错堆栈,只有一个Invoke function error,请问是有什么开关吗?

展开
收起
十一0204 2023-07-26 09:13:32 62 0
1 条回答
写回答
取消 提交回答
  • 在 Apache Dubbo 中,dubbogo 3.0.5 版本服务端出现 "Invoke function error" 的错误,但没有打印报错堆栈信息的情况下,可以尝试以下方法来获取更详细的错误日志:

    1. 检查日志级别:确保你的日志级别设置为 DEBUG。通常,Dubbo 的日志级别默认是 INFO,无法打印详细的堆栈信息。通过将日志级别调整到 DEBUG,可以让 Dubbo 打印更多的调试信息和堆栈跟踪。

    2. 配置异常拦截器(Exception Interceptor):在 Dubbo 服务提供者端配置一个异常拦截器,以便捕获并处理异常。你可以通过实现 org.apache.dubbo.rpc.Filter 接口,并在 invoke() 方法中加入异常处理和日志打印逻辑,从而捕获并打印异常的堆栈信息。

    public class ExceptionInterceptor implements Filter {
        @Override
        public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
            try {
                // 执行服务真正的处理逻辑
                return invoker.invoke(invocation);
            } catch (Throwable e) {
                // 处理异常,打印堆栈信息
                e.printStackTrace();
                throw new RpcException("Invoke function error: " + e.getMessage(), e);
            }
        }
    }
    

    然后,在 Dubbo 服务的配置文件中添加该异常拦截器:

    <dubbo:protocol name="dubbo" port="20880">
        <dubbo:service filter="exceptionInterceptor" ... />
    </dubbo:protocol>
    
    <bean id="exceptionInterceptor" class="com.example.ExceptionInterceptor" />
    

    通过配置异常拦截器,你可以捕获到具体的异常,并在控制台或日志中打印堆栈信息。

    2023-07-27 22:38:26
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Dubbo开源现状与2.7规划 立即下载
Dubbo分布式服务治理实战 立即下载
《Dubbo 3.0 前瞻》 立即下载

相关镜像