dubbo3日志打印问题

最近在做dubbo3的相关优化,最开始时,发现没有打印dubbo日志,当然,生产环境也可以不需要打印,优化时需要开启

1. 为什么没有打印dubbo日志

先说结论,因为项目使用的是logback打印日志,但是,查了下,dubbo可配置日志输出框架,默认是log4j,所以不打印

看下源码

2. dubbo日志框架源码

java 复制代码
public class LoggerFactory {

    private static final ConcurrentMap<String, FailsafeLogger> LOGGERS = new ConcurrentHashMap<>();
    private static final ConcurrentMap<String, FailsafeErrorTypeAwareLogger> ERROR_TYPE_AWARE_LOGGERS = new ConcurrentHashMap<>();
    private static volatile LoggerAdapter LOGGER_ADAPTER;

    // search common-used logging frameworks
    static {
        //--这里可以配置日志输出框架
        String logger = System.getProperty("dubbo.application.logger", "");
        switch (logger) {
            case "slf4j":
                setLoggerAdapter(new Slf4jLoggerAdapter());
                break;
            case "jcl":
                setLoggerAdapter(new JclLoggerAdapter());
                break;
            case "log4j":
                setLoggerAdapter(new Log4jLoggerAdapter());
                break;
            case "jdk":
                setLoggerAdapter(new JdkLoggerAdapter());
                break;
            case "log4j2":
                setLoggerAdapter(new Log4j2LoggerAdapter());
                break;
            default:
                //如果没有配置,则进入默认
                List<Class<? extends LoggerAdapter>> candidates = Arrays.asList(
                    //log4j在第一个
                    Log4jLoggerAdapter.class,
                    Slf4jLoggerAdapter.class,
                    Log4j2LoggerAdapter.class,
                    JclLoggerAdapter.class,
                    JdkLoggerAdapter.class
                );
                for (Class<? extends LoggerAdapter> clazz : candidates) {
                    try {
                        //初始化第一个log4j框架
                        LoggerAdapter loggerAdapter = clazz.newInstance();
                        loggerAdapter.getLogger(LoggerFactory.class);
                        setLoggerAdapter(loggerAdapter);
                        break;
                    } catch (Throwable ignored) {
                    }
                }
        }
    }

解决

我们在yml文件中配置:dubbo.application.logger: slf4j

外传

😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥
相关推荐
星空你好6 小时前
cursor 编程测试,记录写一个全栈完整的crud的过程
javascript·vue·springboot·elementplus·cursor
袁庭新1 天前
Spring Boot项目接收前端参数的11种方式
java·springboot·袁庭新·如何接收前端数据·boot接收数据
V+zmm101341 天前
基于微信小程序的在线选课系统springboot+论文源码调试讲解
java·小程序·毕业设计·mvc·springboot
清风路遥1 天前
【婚庆摄影小程序设计与实现】
微信小程序·毕业设计·springboot·课程设计
嗨小陈3 天前
(带源码)宠物主题商场系统 计算机项目 P10083
计算机专业·springboot·宠物·计算机大作业·商场系统
刘Java3 天前
Dubbo 3.x源码(28)—Dubbo服务发布导出源码(7)应用级服务接口元数据发布
java·dubbo·dubbo源码
嗨小陈4 天前
(免费源码)基于springboot的电影院订票系统设计与实现 计算机毕业设计 P10089
springboot·管理系统·计算机毕业设计·源代码·计算机大作业
武子康4 天前
Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor
java·开发语言·后端·spring·springboot·springcloud
程序猿进阶4 天前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
旭久5 天前
SpringBoot的Thymeleaf做一个可自定义合并td的pdf表格
pdf·html·springboot