Issue 1:
I have searched the issues of this repository and believe that this is not a duplicate.

I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: >= 2.7.0

Operating System version: xxx

Java version: xxx

Steps to reproduce this issue

Pls. provide [GitHub address] to reproduce this issue.

issue: #5480

Expected Result

What do you expected from the above steps？

用户从dubbo 2.6.x升级到apache dubbo 2.7.x时，会存在一些兼容依赖缺失，比如AbstractRegistry、LoggerXxx和其他扩展点兼容问题，导致一些扩展dubbo的一些组件无法良好工作。

期望&建议：

dubbo 2.7.x 中compatible的模块剥离成独立repository, 形成复用依赖

对独立的compatible repository做扩展点梳理和依赖增强(支持更完善)

用户dubbo 2.6.x升级上来时，一些扩展能力和基础组件（比如sdk），添加对应 compatible依赖都可以良好工作，提升用户使用体验

Actual Result

What actually happens?

If there is an exception, please attach the exception trace:

Just put your stack trace here!

Issue 2:
I have searched the issues of this repository and believe that this is not a duplicate.

I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: 2.7.3(with maven groupId: org.apache.dubbo) (upgrade from 2.6.5 with groupId: com.alibaba)

Operating System version: CentOS Linux release 7.3.1611 (Core)

Java version: Oracle JDK 1.8

Steps to reproduce this issue

(Dubbo 2.6.5) Provider-side program with provider.xml (Spring-Context-Configuration), which without metadata-report configuration. And accesslog enabled:

<dubbo:protocol name="dubbo" port="21881" server="netty" register="true" accesslog="logs/access.log"/>
<!-- 接口的位置 -->
<dubbo:service interface="xxx.xxx.xxxService"
ref="xxxService" timeout="10000" retries="3"
executes="100" loadbalance="leastactive"
accesslog="logs/access-xxx.log" register="true"
owner="jk" group="gp" version="1.0" />

Launching the program, and accesslog print exactly.

(Upgrade to 2.7.3) Enable metadata-report (I'm not sure whether this affects. Then I tried without metadata-report configuration, and it still not works.), with configuration:

<dubbo:metadata-report address="zookeeper://zk1.registry.gp.org:2181" cycle-report="false" sync-report="true"/>

Restart the provider-side program, console got log:

2019-11-05 14:55:28 [DUBBO] You specified the config centre, but there's not even one single config item in it., dubbo version: 2.7.3, current host: 192.168.10.***
2019-11-05 14:55:28 [DUBBO] You specified the config centre, but there's not even one single config item in it., dubbo version: 2.7.3, current host: 192.168.10.***
2019-11-05 14:55:28 [DUBBO] There's no valid monitor config found, if you want to open monitor statistics for Dubbo, please make sure your monitor is configured properly., dubbo version: 2.7.3, current host: 192.168.10.***

and the accesslog file, which specified with path logs/access-xxx.log does NOT print any access log data.

5. Remove metadata-report configuration, and restart the provider-side program, the same scene appears in step 4.

6. I debugged the code, the AccessLogFilter class in dubbo-2.7.3.jar got an invoker with URL dubbo://192.168.10.xxx:20881/xxx.xxx.xxxService?accesslog=logs/access-xxx.log&anyhost=true&application=platform-xxx-provider&bean.name=xxx.xxx.xxxService&bind.ip=192.168.10.***&bind.port=20881&deprecated=false&dubbo=2.0.2&dynamic=true&executes=16&generic=false&group=gp&interface=xxx.xxx.xxxService&loadbalance=leastactive&methods=advanced,simple&owner=jk&pid=106617&qos.accept.foreign.ip=false&qos.enable=false&qos.port=33333&register=true&release=2.7.3&retries=3&revision=1.0.0&server=netty&side=provider&timeout=10000&timestamp=1572936930641&version=1.0

Here we got a parameter named accesslog in the URL, but the code retrieved dubbo.accesslog key which assigned by static final variable ACCESS_LOG_KEY in this class, and then got null value with accessLogKey variable during the invoke function below:

@Override
public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {
try {
String accessLogKey = invoker.getUrl().getParameter(ACCESS_LOG_KEY);
if (ConfigUtils.isNotEmpty(accessLogKey)) {
AccessLogData logData = buildAccessLogData(invoker, inv);
log(accessLogKey, logData);
}
} catch (Throwable t) {
logger.warn("Exception in AccessLogFilter of service(" + invoker + " -> " + inv + ")", t);
}
return invoker.invoke(inv);
}

AND, I also tried the source code with dubbo-2.6.5 (maven groupId: com.alibaba), and got different Java implementation source bellow (Notice that, the Constants.ACCESS_LOG_KEY has value accesslog assigned, and same value in 2.7.3 with maven groupId: org.apache.dubbo):

@Override
public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {
try {
String accesslog = invoker.getUrl().getParameter(Constants.ACCESS_LOG_KEY);
if (ConfigUtils.isNotEmpty(accesslog)) {
RpcContext context = RpcContext.getContext();
String serviceName = invoker.getInterface().getName();
String version = invoker.getUrl().getParameter(Constants.VERSION_KEY);
String group = invoker.getUrl().getParameter(Constants.GROUP_KEY);
...

BTW: The bugfix 4374 shows that this was fixed, but not specified the fixed version.

Expected Result

Those accesslog configurations should also work, or some other ways to meet the accesslog needs.

BTW: It seems that the AccessLogFilter.ACCESS_LOG_KEY used correctly, and value assigned correctly here. Since it works before metadata-report configured. But when metadata-report configured, it does not work. Is the URL value generated correctly?

Actual Result

I have read the documents of accesslog, but neither the Logging by logging framework part nor the Logging by specified file path part works.

If there is an exception, please attach the exception trace:

NO EXCEPTION. CONFIGURATION NOT WORK.