1.日志实体类信息包括哪些内容?
2.我找到了Dubbo源码的源码BUG,同事纷纷说我有点东西
日志实体类信息包括哪些内容?
tomcat 日志信息
前言
tomcat的源码日志信息。
tomcat如何查看日志信息。源码
tomcat的源码日志信息包括哪些部分。
tomcat的源码日志信息包括哪些部分
1、启动/关闭tomcat时的源码任天堂windous源码日志信息,这里指的源码是tomcat本身的日志信息,往往是源码tomcat本身的问题。
比如,源码启动tomcat时,源码端口被占用。源码
2、源码linux ssh源码访问网站时出现的源码日志信息,这里往往是源码代码程序出现bug。
tomcat如何查看日志信息
tomcat的源码日志信息文件,是放在安装目录/logs/目录下的。最常用的包括两部分,就是前面说的2种类型。
1、启动/关闭tomcat时的日志信息,在 catalina.--.log文件里。
每天都会生成一个新的单独的文件。
2、多看小说源码访问网站时的日志信息,在localhost.--.log文件里。
只要那天有访问,就会生成一个新的单独的日志文件。
收起全文
一个日志系统需要具备哪些功能
我找到了Dubbo源码的BUG,同事纷纷说我有点东西
某天,运营反馈称,执行一次保存操作后,后台出现3条数据,我立刻怀疑可能存在代码问题。为了确保不会误判,域名停靠源码我要求暂停操作,保留现场,以便我进行排查。
查看新增代码,发现是同事三歪进行的改动,他将原有的dubbo XML配置方式改为了注解方式。我询问其改动详情,得知他是更改了模块的配置方式。于是,我决定深入研究,找出问题所在。nodejs源码 github
dubbo配置方式多样,最常见的为XML配置与注解配置。我已初步推测原因,接下来将进行详细的调试过程。
我使用dubbo版本2.6.2进行调试。首先,针对采用@Reference注解条件下的重试次数配置,我发现调用接口时,会跳转到InvokerInvocationHandler的invoke方法。继续跟踪,最终定位到FailoverClusterInvoker的doInvoke方法。在该方法中,我关注到获取配置的retries值,发现其默认值为null,导致最终计算出的重试次数为3。
采用dubbo:reference标签配置重试次数时,同样在获取属性值后,发现其默认值为0,与注解配置一致,最终计算出的重试次数为1。对比两种配置方式,我总结了以下原因:
在@Reference注解形式下,dubbo会在注入代理对象时,通过自定义驱动器ReferenceAnnotationBeanPostProcessor来注入属性。在标签形式下,虽然也使用了Autowired注解,但dubbo会使用自定义名称空间解析器DubboNamespaceHandler进行解析。
在注解形式下,当配置retries为0时,属性值在注入过程中并未被解析为null,但进入buildReferenceBean时,因nullSafeEquals方法的处理,导致默认值和实际值不一致,最终未保存到map中。而标签形式下,解析器能够正确解析出retries的值为0,避免了后续的问题。
总结发现,采用@Reference注解配置重试次数时,dubbo在注入属性过程中存在逻辑处理上的问题,导致默认值与实际值不一致。此为dubbo的一个逻辑bug。建议在不需要重试时,设置retries为-1,以确保接口的幂等性。需要重试时,设置为1或更大值。
问题解决后,我优化了文件操作,将其改为异步处理,从而缩短了主流程的时间。最终,数据出现3条的状况得以解决。
此问题已得到解决,并在后续dubbo版本2.7.3中修复,确保了在注解配置方式下,nullSafeEquals方法能够正确处理默认值与实际值一致的情况。