dubbo框架下的生产者抛出异常为什么在控制台不输出异常信息? - 知乎

在生产者方抛出异常,控制台、日志不报异常的原因,我现在初步弄清楚了:
控制台不报异常:之前一直有个误区,还是因为自己对整个流程没有弄清楚。dubbo调用服务的时候,是通过自己的dubbo协议,经socket直接去调用服务的,这个请求是不经过服务端tomcat的,所以,不是tomcat的程序去调用的具体服务方法,因此,服务方法抛出异常,自然启动tomcat的控制台也无法显示异常,因为tomcat捕捉不到异常啊~

日志:日志不报异常的原因,是应为dubbo框架的日志配置问题。dubbo默认以log4j来作为框架日志,所以,即使你引入了slf4j也没有,人家框架根本没用它。想让dubbo使用slf4j,需要自己配置一个jvm的环境参数:dubbo.application.logger=slf4j,dubbo框架在初始化自己的日志系统的时候会到jvm去获取这个参数作为参考。如何去配置这个参数,可以在启动程序的时候给jvm配置参数 -Ddubbo.application.logger=slf4j(这块知识不懂的,自己查jvm启动参数的相关知识);此外,还可以通过System.setProperty(key,prop)方法来设置。当然,这个方法要在dubbo配置自己的日志之前调用。因为我是将spring跟dubbo一起用的,这里说一个spring的实现方法:自己扩展
ContextLoaderListener类,在自定义类static静态代码块里调用System.set...()方法即可。最后别忘了,配置这个类去作为spring的启动监听器。
以上。
欢迎提问。


Original url: Access
Created at: 2020-05-26 09:41:14
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论