DUBBO client端error日志打不出问题

问题

旧服务迁移至dubbo服务,后发布请求错误后,日志未输出,只能在网关服务查看日志,定位问题需要跨服务。
若是出现某些服务内进程,如job异常,则无法定位问题(当然不包括系统够健硕,在可能出现的位置捕获了异常情况)。

定位

在这里插入图片描述
查看启动日志,发现日志提示

log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.logger.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

解决方案

查看dubbo文档,可知默认是log4j框架,而logback 使用的是slf4j框架。
dubbo 日志框架初始化源码:

// 查找常用的日志框架
  static {
      String logger = System.getProperty("dubbo.application.logger");
      if ("slf4j".equals(logger)) {
  		setLoggerAdapter(new Slf4jLoggerAdapter());
  	} else if ("jcl".equals(logger)) {
  		setLoggerAdapter(new JclLoggerAdapter());
  	} else if ("log4j".equals(logger)) {
  		setLoggerAdapter(new Log4jLoggerAdapter());
  	} else if ("jdk".equals(logger)) {
  		setLoggerAdapter(new JdkLoggerAdapter());
  	} else {
  		try {
  			setLoggerAdapter(new Log4jLoggerAdapter());
          } catch (Throwable e1) {
              try {
              	setLoggerAdapter(new Slf4jLoggerAdapter());
              } catch (Throwable e2) {
                  try {
                  	setLoggerAdapter(new JclLoggerAdapter());
                  } catch (Throwable e3) {
                      setLoggerAdapter(new JdkLoggerAdapter());
                  }
              }
          }
  	}
  }

方案一:
在配置文件中指定dubbo 的 logger 框架。
若已依赖,则查看是否存在jar包冲突。

 dubbo:
  application:
    logger: slf4j

方案二:
pom添加依赖包:

      <dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>log4j-over-slf4j</artifactId>
			<version>${slf4j.version}</version>			
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jul-to-slf4j</artifactId>
			<version>${slf4j.version}</version>			
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>

总结

个人偏向使用方案一处理,亲测依赖jar冲突,也可以使用方案一解决。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值