dubbo
dubbo copied to clipboard
应用启动时不显示dubbo版本号
Environment
- Dubbo version: 3.1.5
- Operating System version: windows 10
- Java version: xxx
Steps to reproduce this issue
升级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 : [email protected]
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>
试试最新版本呢?3.2.0-beta.4-SNAPSHOT应该是没问题的
尝试用 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 : [email protected]
, dubbo version: 3.1.5, current host: 10.3.85.142
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
可以提供复现的项目吗
尝试用 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 : [email protected] , dubbo version: 3.1.5, current host: 10.3.85.142 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.3.1.RELEASE)
可以提供复现的项目吗
感谢回复,等我做下脱敏工作。
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 : [email protected] , dubbo version: 3.1.5, current host: 10.3.85.142 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.3.1.RELEASE)
可以提供复现的项目吗
应该是你没有 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
应该是你没有 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 : [email protected]
有个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的问题
有个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版本修复此问题
有个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版本修复此问题
非常感谢这么快定位到问题并回复!
@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。
@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。
了解
@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);
}
}
@KamToHung -Ddubbo.application.logger=slf4j应该能生效吧