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

外传

复制代码
😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥
相关推荐
Likeadust11 小时前
应急调度看不清位置?集群对讲调度系统EasyDSS集群对讲调度室上线可配置地图
dubbo
孔明click3314 小时前
别人绕过我的网关直接调用资源服务怎么办?使用 Sa-Token 解决:网关转发鉴权、RPC调用鉴权
java·sa-token·springboot·权限·权限认证
zhanghaha13142 天前
HTML系列教程:5_HTML 属性 超详细零基础讲解
dubbo
山甫aa3 天前
Javaweb---MyBatis增删改查
java·数据库·后端·mybatis·springboot
山甫aa3 天前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
Mr. zhihao4 天前
从零手写一个 RPC 框架:用一条因果链推导出 Dubbo 的骨架
网络协议·rpc·dubbo
小博测试成长之路4 天前
55分钟能用飞算JavaAI搭完JWT REST API吗?
springboot·ai编程·java开发·飞算javaai·ai coding·java代码生成
努力就够了4 天前
搭建属于自己的 AI 智能体以及多 Agent 协作
springboot·ai agent·ai 智能体·多 agent 协作
chaser&upper5 天前
飞算JavaAI能听懂食品安全召回系统的复杂业务吗?
springboot·crud·vibe coding·飞算javaai·ai coding模型
承渊政道5 天前
10:30提交预约会不会撞上10:00的会议?我用飞算JavaAI3.9.1和3.9.9跑了四个时间段
java·springboot·ai编程·飞算javaai·java代码生成