[apache/dubbo]应用启动时不显示dubbo版本号

2024-05-24 129 views
9
Environment
  • Dubbo version: 3.1.5
  • Operating System version: windows 10
  • Java version: xxx

升级dubbo版本到3.1.5就不显示了,3.1.0显示正常

3.1.0启动日志

Java HotSpot(TM) 64-Bit Server VM warning: CMSFullGCsBeforeCompaction is deprecated and will likely be removed in a future release.
log4j:WARN No appenders could be found for logger (org.apache.dubbo.common.Version).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2023-01-29 08:11:23.163 INFO 1 [main] org.apache.dubbo.spring.boot.context.event.WelcomeLogoApplicationListener[] 
 :: Dubbo (v3.1.0) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org

3.1.5启动日志

Java HotSpot(TM) 64-Bit Server VM warning: CMSFullGCsBeforeCompaction is deprecated and will likely be removed in a future release.
   ____                   ____  ___   _____ ____ 
  / __ \____  ___  ____  / __ \/   | / ___// __ \
 / / / / __ \/ _ \/ __ \/ /_/ / /| | \__ \/ /_/ /
/ /_/ / /_/ /  __/ / / / _, _/ ___ |___/ / ____/ 
\____/ .___/\___/_/ /_/_/ |_/_/  |_/____/_/      
    /_/                                          
Jan 29, 2023 10:48:09 AM com.baidu.openrasp.nativelib.BaseJniExtractor info
INFO: mappedLib is libopenrasp_v8_java.so
Jan 29, 2023 10:48:09 AM com.baidu.openrasp.nativelib.BaseJniExtractor info
INFO: Extracting 'jar:file:/opt/rasp/rasp-engine.jar!/natives/linux_64/libopenrasp_v8_java.so' to '/tmp/nativelib-loader_4549797774870065854/Classloader.1674960489720.0/libopenrasp_v8_java.so'
[OpenRASP] Log4j debug mode disabled
[OpenRASP] Log4j initialized successfully
[OpenRASP] RASP ID: d6c3cb32680489735d72baaaa1e25754
[OpenRASP] Engine Initialized [1.3.7 (build: GitCommit=f264cc6 date=2022-03-11T11:55:29Z)]
log4j:WARN No appenders could be found for logger (org.apache.dubbo.common.Version).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

推断bug产生的原因是启动时,org.apache.dubbo.common.Version值初始化异常,应用启动成功后,dubbo版本号在控制台显示是正常的。

# telnet 127.0.0.1 22222
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
   ___   __  __ ___   ___   ____     
  / _ \ / / / // _ ) / _ ) / __ \  
 / // // /_/ // _  |/ _  |/ /_/ /    
/____/ \____//____//____/ \____/   
dubbo>version
dubbo version "3.1.5"
dubbo>

回答

8

试试最新版本呢?3.2.0-beta.4-SNAPSHOT应该是没问题的 image

5

尝试用 3.1.5 无法复现问题

[30/01/23 11:07:41:262 CST] main  INFO event.WelcomeLogoApplicationListener:  [DUBBO] 

 :: Dubbo (v3.1.5) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org
, dubbo version: 3.1.5, current host: 10.3.85.142

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.1.RELEASE)

可以提供复现的项目吗

4

尝试用 3.1.5 无法复现问题

[30/01/23 11:07:41:262 CST] main  INFO event.WelcomeLogoApplicationListener:  [DUBBO] 

 :: Dubbo (v3.1.5) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org
, dubbo version: 3.1.5, current host: 10.3.85.142

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.1.RELEASE)

可以提供复现的项目吗

感谢回复,等我做下脱敏工作。

9

https://github.com/egalee/dubbo-demo 注册中心:nacos 2.0.3

尝试用 3.1.5 无法复现问题

[30/01/23 11:07:41:262 CST] main  INFO event.WelcomeLogoApplicationListener:  [DUBBO] 

 :: Dubbo (v3.1.5) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org
, dubbo version: 3.1.5, current host: 10.3.85.142

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.1.RELEASE)

可以提供复现的项目吗

1

应该是你没有 log4j 的配置, 参考文件 dubbo-provider/src/main/resources/log4j.properties

###set log levels###
log4j.rootLogger=info, stdout
###output to the console###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2}: %m%n
5

应该是你没有 log4j 的配置, 参考文件 dubbo-provider/src/main/resources/log4j.properties

###set log levels###
log4j.rootLogger=info, stdout
###output to the console###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2}: %m%n

同样的配置,dubbo降回3.1.0就可以正常显示。

Connected to the target VM, address: '127.0.0.1:62080', transport: 'socket'
log4j:WARN No appenders could be found for logger (org.apache.dubbo.common.Version).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2023-01-31 15:48:21.475  INFO 16020 --- [           main] d.s.b.c.e.WelcomeLogoApplicationListener : 

 :: Dubbo (v3.1.0) : https://github.com/apache/dubbo
 :: Discuss group : dev@dubbo.apache.org
8

有个pull做了log4j的适配 10952, 代码3.1.5和3.1.0不变,但是WelcomeLogoApplicationListener中的Logger: 3.1.0版本使用:org.slf4j.Logger 3.1.5版本使用:org.apache.dubbo.common.logger.Logger 此pull修改了Logger的包引发的问题11000 结论: 3.1.4版本合并了11000但是没合并 10952的问题

6

有个pull做了log4j的适配 10952, 代码3.1.5和3.1.0不变,但是WelcomeLogoApplicationListener中的Logger: 3.1.0版本使用:org.slf4j.Logger 3.1.5版本使用:org.apache.dubbo.common.logger.Logger 此pull修改了Logger的包引发的问题11000 结论: 3.1.4版本合并了11000但是没合并 10952的问题

我可以在3.1.x版本修复此问题

9

有个pull做了log4j的适配 10952, 代码3.1.5和3.1.0不变,但是WelcomeLogoApplicationListener中的Logger: 3.1.0版本使用:org.slf4j.Logger 3.1.5版本使用:org.apache.dubbo.common.logger.Logger 此pull修改了Logger的包引发的问题11000 结论: 3.1.4版本合并了11000但是没合并 10952的问题

我可以在3.1.x版本修复此问题

非常感谢这么快定位到问题并回复!

1

@egalee 主要原因是依赖中既传递了log4j的依赖,也有slf4j的依赖,而https://github.com/apache/dubbo/pull/11000 合并之前一直都写死了用slf4j,这个导致dubbo内的dubbo.application.logger配置对不规范的日志输出并不起效果。这也是https://github.com/apache/dubbo/pull/11000修复的原因。 至于为什么用低版本可以,是之前强制slf4j,所以不影响,现在改为标准输出后,在没有配置dubbo.application.logger的情况下,如果依赖中依赖了log4j,优先会按照log4j输出,然而如果没有配置log4j,则出现没有日志输出的情况。 所以有2个办法,一个是升级3.2,3.2将完成这块的适配。一个是配置一下dubbo.application.logger=slf4j。

2

@egalee 主要原因是依赖中既传递了log4j的依赖,也有slf4j的依赖,而#11000 合并之前一直都写死了用slf4j,这个导致dubbo内的dubbo.application.logger配置对不规范的日志输出并不起效果。这也是https://github.com/apache/dubbo/pull/11000修复的原因。 至于为什么用低版本可以,是之前强制slf4j,所以不影响,现在改为标准输出后,在没有配置dubbo.application.logger的情况下,如果依赖中依赖了log4j,优先会按照log4j输出,然而如果没有配置log4j,则出现没有日志输出的情况。 所以有2个办法,一个是升级3.2,3.2将完成这块的适配。一个是配置一下dubbo.application.logger=slf4j。

了解

9

@egalee 主要原因是依赖中既传递了log4j的依赖,也有slf4j的依赖,而#11000 合并之前一直都写死了用slf4j,这个导致dubbo内的dubbo.application.logger配置对不规范的日志输出并不起效果。这也是https://github.com/apache/dubbo/pull/11000修复的原因。 至于为什么用低版本可以,是之前强制slf4j,所以不影响,现在改为标准输出后,在没有配置dubbo.application.logger的情况下,如果依赖中依赖了log4j,优先会按照log4j输出,然而如果没有配置log4j,则出现没有日志输出的情况。 所以有2个办法,一个是升级3.2,3.2将完成这块的适配。一个是配置一下dubbo.application.logger=slf4j。

尝试了下配置dubbo.application.logger=slf4j不生效 原因是ApplicationEnvironmentPreparedEvent事件在ApplicationConfig配置之前就触发了,此时使用的日志是log4j 除非在代码中配置

@SpringBootApplication
@EnableDubbo
public class StartConsumer {

    public static void main(String[] args) {
        System.setProperty("dubbo.application.logger","slf4j");
        SpringApplication.run(StartConsumer.class, args);
    }

}
7

@KamToHung -Ddubbo.application.logger=slf4j应该能生效吧