dubbo使用logback输出日志

原创 2015年11月20日 15:00:15

最近在做dubbo协议扩展,发现dubbo错误信息没有打印。于是跟踪源码发现,dubbo默认使用log4j作为日志输出,而我们项目是采用logback来输出日志。

采取以下方式来切换成slf4j:

(1)设置jvm启动参数来指定slf4j(这种方式无论是spring容器还是web容器均可适用)

          -Ddubbo.application.logger=slf4j

(2)web项目,可继承ContextLoaderListener来设置

         System.setProperty("dubbo.application.logger","slf4j");

设置前,启动日志如下:

        c.a.d.common.logger.LoggerFactory - using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter

设置后,启动日志如下:

        c.a.d.common.logger.LoggerFactory - using logger: com.alibaba.dubbo.common.logger.slf4j.Slf4jLoggerAdapter

大家看到,日志输出器已切换成slf4j。

下面贴出dubbo的loggerFactory源码,查找日志适配器部分:

// 查找常用的日志框架
	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());
                    }
                }
            }
    	}
	}

可看出如果没有设置,则默认采用log4j进行日志输出。

       

dubbo项目中使用logback输出日志

初次建立dubbo项目,并启动服务提供方时会看到如下的警告。log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.c...
  • Revivedsun
  • Revivedsun
  • 2016年09月25日 22:51
  • 8260

如何开启Dubbo框架内部的日志?

欢迎加入DUBBO交流群:259566260 这里将对如何在自己的项目里面开启dubbo框架自己的日志,并对输出的日志进行控制。在讲这些之前,先看看dubbo在处理日志的时候是怎么做的?  ...
  • JDream314
  • JDream314
  • 2015年03月25日 13:52
  • 22177

dubbo提供者打包,解决jar不能正常运行(不能注册到注册中心)

这几天打包发布dubbo消费者,出现了各种问题. 今天记录的是直接在Eclispe是运行Main方法时正常使用服务.打包成jar在服务运行时不能正常使用问题. 我写的Main方法: public cl...
  • vispin
  • vispin
  • 2015年05月25日 15:06
  • 6024

一个异常引起的反思

昨天在调试程序的时候,看到程序报错如下: log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.lo...
  • StanleyQiu
  • StanleyQiu
  • 2012年09月15日 17:02
  • 38807

dubbo学习九--服务降级,优雅停机,日志

向注册中心写入动态配置覆盖规则:(通过由监控中心或治理中心的页面完成) RegistryFactory registryFactory = ExtensionLoader.getExtens...
  • CHS007chs
  • CHS007chs
  • 2017年01月05日 15:02
  • 2659

Dubbo Main启动方式浅析

服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源。 服务容器只是一个简单的Mai...
  • xiaomin1991222
  • xiaomin1991222
  • 2016年03月10日 16:05
  • 21322

[转载,感觉写的非常详细]DUBBO配置方式详解

DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次...
  • huangjin0507
  • huangjin0507
  • 2016年08月17日 20:10
  • 27160

dubbo日志(一):部署zookeeper

声明:本文为笔者随心所写,随意而为。文中介绍仅作参考。出了啥问题本人不负责!...
  • j519357243
  • j519357243
  • 2016年08月18日 17:46
  • 596

精通Dubbo——Dubbo配置文件详解

依赖的jar理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策略。缺省依赖(系统默认)通过mvn dependency:tree > dep.log命令(Eclip...
  • fuyuwei2015
  • fuyuwei2015
  • 2017年06月01日 22:44
  • 4169

dubbo使用logback来输出日志

dubbo使用logback来输出日志 如何快捷 简单 开启Dubbo框架内部的日志 dubbo记录日志...
  • john1337
  • john1337
  • 2017年07月13日 15:17
  • 1380
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dubbo使用logback输出日志
举报原因:
原因补充:

(最多只允许输入30个字)