
一、#创作灵感#
Dubbo3在公司项目中运用越来越多,固写下此笔记以巩固知识要点。
Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1]Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

二、环境
- SpringBoot 2.7.18 官方地址:SpringBoot 2.7.18
- SpringCloud 2021.0.9 官方地址:SpringCloud 2021.0.9
- SpringCloud Alibaba 2021.0.6.1 官方地址:SpringCloud Alibaba 2021.0.6.1
- Nacos 2.4.3 官方下载地址:Nacos 2.4.3
- Dubbo 3.3.2 https://cn.dubbo.apache.org (普通网络可能访问受限)
- Open JDK17 下载地址:Open JDK17
- 本环境与作者另一篇文章的dubbo客户端对应(springboot3+nacos注册中心调用该dubbo服务)
待完善
三、SpringCloud Alibaba版本说明
由于作者所在公司软件安全比较严苛,所以没有完全按照版本关系来。但功能都测试通过,所有组件算集成成功。当然之个过程也费了一些精力。
SpringCloud Alibaba不是本文的重点,SpringCloud Alibaba本身包含一套SpringCloud 与Nacos,本文主要讲SpringCloud 与Nacos的集成。
因专业人员都会考虑这一点,所以这里简单说明一下
四、Nacos安装及验证
熟悉Nacos安装的可跳过该章节
详见:Spring Cloud整合Nacos作为注册配置中心【最佳实践】
五、Spring Cloud整合Nacos作为dubbo服务注册中心
nacos高手一般直接看官网就够
Nacos 融合 Spring Cloud,成为注册配置中心 | Nacos 官网
dubbo官网(目前好像普通网络访问不了2025.08)
1、添加pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- 3.5.4 3.4.8 3.3.13 3.2.12 3.1.12 3.0.12 2.7.18 -->
<version>2.7.18</version>
<!-- lookup parent from repository -->
<relativePath/>
</parent>
<groupId>com.*****.boot</groupId>
<artifactId>smet-rpc-service</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 统一管理jar包版本 -->
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<!-- 3.1.5 3.0.12 2.7.18 2.6.13
官方三件套: 2.6.13 2021.0.5 2021.0.6.1
-->
<spring-boot.version>2.7.18</spring-boot.version>
<!-- 2023.0.3 2022.0.5 2021.0.9 2021.0.5 -->
<spring-cloud.version>2021.0.9</spring-cloud.version>
<!-- 2023.0.1.3 2022.0.0.0 2021.1 2021.0.6.1 2021.0.5.0 -->
<spring-cloud-alibaba.version>2021.0.6.1</spring-cloud-alibaba.version>
<!-- springcloud 2020.02 以后需要单独引入 4.1.4 4.0.5 3.1.9 3.0.6 -->
<spring-cloud-starter-bootstrap.version>3.1.9</spring-cloud-starter-bootstrap.version>
<!-- 0.3.0-RC 适配springboot3 0.2.12 适配springboot2 0.1.10 适配springboot1 -->
<nacos-config-spring-boot-starter.version>0.2.12</nacos-config-spring-boot-starter.version>
<!-- <spring-boot-admin.version>2.7.17</spring-boot-admin.version>-->
<!-- Dubbo 3.3.2 3.2.16 3.1.11 2.7.23
阿里新平台已经将HSF换成了dubbo3 -->
<dubbo.version>3.3.2</dubbo.version>
<!-- 4.1.4 4.0.5 3.1.9 3.0.6 2.2.9.RELEASE -->
<loadbalancer.version>3.1.9</loadbalancer.version>
<!-- 2.3 2.2 1.33 1.30 -->
<snakeyaml.version>2.3</snakeyaml.version>
<fastjson2.version>2.0.53</fastjson2.version>
</properties>
<dependencies>
<!-- Apache Dubbo Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-bom</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring-cloud-starter-bootstrap.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 如果要作为配置中心就添加 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 如果要作为注册中心就添加 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-nacos-spring-boot-starter</artifactId>
</dependency>
<!-- Spring Cloud Alibaba Dubbo Apr 08, 2021 开始没有跟版本演进(版本:2021.1)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency> -->
<!--添加loadbalanncer依赖, 添加spring-cloud的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>${loadbalancer.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<!-- form数据验证依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>${snakeyaml.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
2、bootstrap.properties配置
这里涉及4个JVM启动参数:
-Dprofile=dev
-Dnacos-addr=10.130.***.**:18848
-Dnacos-password=nacos2024****
-Dgroup=A
logging.config=classpath:logback-spring.xml
spring.application.name=***-rpc-service
# Nacos地址
spring.cloud.nacos.config.server-addr=${nacos-addr}
# Nacos认证信息
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=${nacos-password}
spring.cloud.nacos.config.contextPath=/nacos
# 服务配置
# 主配置 > 扩展配置(extension-configs) > 共享配置(shared-configs)
# extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0]
# shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]
spring.cloud.nacos.config.import-check.enabled=true
spring.cloud.nacos.config.namespace=***-rpc-service
spring.cloud.nacos.config.group=${group}
spring.cloud.nacos.config.refresh-enabled=true
spring.cloud.nacos.config.file-extension=properties
### 将 DataID 设置到 nacos: 协议后面, 如果是默认分组则不用配置import
spring.config.import=nacos:smet-basic,nnacos:smet-datasource,nacos:smet-mq,nacos:smet-management,nacos:smet-prometheus,nacos:smet-elasticsearch,nacos:smet-sw-ui,nacos:smet-job,nacos:smet-****....
# 服务注册
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=${nacos-password}
spring.cloud.nacos.discovery.namespace=***-rpc-service
spring.cloud.nacos.discovery.group=${group}
spring.cloud.nacos.discovery.server-addr=${nacos-addr}
3、application.properties配置
spring.profiles.active=${profile}
spring.cloud.nacos.config.extension-configs[10].data-id=****
spring.cloud.nacos.config.extension-configs[10].group=smet-rpc-service
# 自动刷新配置
spring.cloud.nacos.config.extension-configs[10].refresh=true
# dubbo配置
spring.cloud.nacos.config.extension-configs[9].data-id=smet-dubbo
spring.cloud.nacos.config.extension-configs[9].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[9].refresh=true
# 汇总基础配置
spring.cloud.nacos.config.extension-configs[8].data-id=smet-basic
spring.cloud.nacos.config.extension-configs[8].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[8].refresh=true
# 数据源
spring.cloud.nacos.config.extension-configs[7].data-id=smet-datasource
spring.cloud.nacos.config.extension-configs[7].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[7].refresh=true
# 消息队列
spring.cloud.nacos.config.extension-configs[6].data-id=smet-mq
spring.cloud.nacos.config.extension-configs[6].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[6].refresh=true
# 应用管理
spring.cloud.nacos.config.extension-configs[5].data-id=smet-management
spring.cloud.nacos.config.extension-configs[5].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[5].refresh=true
# 普米
spring.cloud.nacos.config.extension-configs[4].data-id=smet-prometheus
spring.cloud.nacos.config.extension-configs[4].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[4].refresh=true
# es
spring.cloud.nacos.config.extension-configs[3].data-id=smet-elasticsearch
spring.cloud.nacos.config.extension-configs[3].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[3].refresh=true
# skywalking-ui
spring.cloud.nacos.config.extension-configs[2].data-id=smet-sw-ui
spring.cloud.nacos.config.extension-configs[2].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[2].refresh=true
# 外围接口
spring.cloud.nacos.config.extension-configs[1].data-id=smet-***
spring.cloud.nacos.config.extension-configs[1].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[1].refresh=true
# 定时任务
spring.cloud.nacos.config.extension-configs[0].data-id=smet-job
spring.cloud.nacos.config.extension-configs[0].group=smet-rpc-service
spring.cloud.nacos.config.extension-configs[0].refresh=true
4、添加命名空间

5、添加配置(详细介绍Dubbo配置)

Dubbo配置:
dubbo.application.name=smet-rpc-service
dubbo.application.logger=slf4j
# 禁用QOS同一台机器可能会有端口冲突现象,qos=Quality of Service 是Dubbo的在线运维命令,可以对服务进行动态的配置、控制(上下线)及查询
dubbo.application.qos-enable=true
# 默认端口号是 22222 一台机器启动多个包含dubbo的应用 2: 22223 3: 33333
dubbo.application.qos-port=22222
# 允许访问的ip,缺省就是false,表示任何ip都可访问
dubbo.application.qos-accept-foreign-ip=false
# 这里通过环境变量注入
dubbo.registry.address=nacos://${nacos-addr}
# Nacos认证信息 也可写在url中:?username=nacos&password=${nacos-password:nacos}&namespace=smet-rpc-service&group=A
dubbo.registry.username=nacos
# nacos2024ip92 本地:nacos2024
dubbo.registry.password=${nacos-password}
# instance interface all (default)
dubbo.registry.register-mode=all
dubbo.registry.parameters.namespace=smet-rpc-service
dubbo.registry.parameters.group=${group}
#dubbo.registry.simplified=true
# tri : dubbo3主推协议,新一代dubbo协议 ,其他协议: dubbo rmi hessian rest, dubbo支持多协议,同协议多端口, 但不适合在properties中配置
dubbo.protocol.name=tri
# dubbo服务是独立的端口 ( -1 表示自增端口,从 20880 开始)
# tri 50051 -1时从50052开始找
# dubbo 20880 -1时从20881开始找
dubbo.protocol.port=50051
6、服务(提供)类
/**
* @Description: *****
* @Author: daizd
* @CreateDate: 2025/5/6 09:02
* @Version: 1.0
dubbo 3 Service和DubboService注释不会冲突
*/
@Slf4j
@Service
@DubboService(version = "1.0")
public class SmsLinkageServiceImpl {
@Override
public String saasCtTopErrMsg(String systemCode, String dateStr) {
String ret=null;
ret = "success";
System.out.println("success!");
return retStr;
}
}
常见问题(FAQ)
Q1:为什么nacos界面菜单:服务管理-》服务列表 中只能看到应用名而看不到服务提供者的类名?
A:显示应用名、还是类名、亦或都显示由这条dubbo配置决定
# instance interface all (default)
dubbo.registry.register-mode=all
配置instance效果图:

Q2:SpringBoot2.7.18能与dubbo3集成吗?
A:能,本文就是。而且作者还有一遍文章写的dubbo3客户端,是用的springboot3.3.2
Q3:客户端是SpringBoot3能调用该服务吗?
A:能,可参考作者另一篇客户端的文章
附件一:logback日志门面配置(经典模板)
带级别分类、文件大小滚动、存储周期、根路径注入
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
<!-- <property name="log.path" value="/Users/daizhongde/logs/logback/saashealth" />-->
<property name="log.path" value="${log.path}/logs/logback/saashealth" />
<!-- <property name="log.path" value="${HOME}/logs/logback/saashealth" />-->
<!-- 彩色日志 -->
<!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
<!-- magenta:洋红 -->
<!-- boldMagenta:粗红-->
<!-- cyan:青色 -->
<!-- white:白色 -->
<!-- magenta:洋红 -->
<property name="CONSOLE_LOG_PATTERN"
value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>
<!--输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<!-- 例如:如果此处配置了INFO级别,则后面其他位置即使配置了DEBUG级别的日志,也不会被输出 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--输出到文件-->
<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_debug.log</file>
<!--日志文件输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数, 1天有 7GB,可优化 -->
<maxHistory>1</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录 debug 级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_info.log</file>
<!--日志文件输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>3</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 时间滚动输出 level为 WARN 日志 -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_warn.log</file>
<!--日志文件输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>7</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录warn级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_error.log</file>
<!--日志文件输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录ERROR级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。
<logger>仅有一个name属性,
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
如果未设置此属性,那么当前logger将会继承上级的级别。
-->
<!--
使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
第一种把<root level="INFO">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
第二种就是单独给mapper下目录配置DEBUG模式,代码如下,这样配置sql语句会打印,其他还是正常DEBUG级别:
-->
<!--开发环境:打印控制台-->
<springProfile name="dev">
<!--可以输出项目中的debug日志,包括mybatis的sql日志-->
<logger name="com.asiainfo" level="DEBUG" />
<logger name="com.zaxxer.hikari" level="INFO"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="org.apache.hc.client5.http" level="INFO"/>
<logger name="com.clickhouse.client.http.ClickHouseHttpClient" level="DEBUG"/>
<!--
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
可以包含零个或多个appender元素。
-->
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="WARN_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
<!-- CI环境:打印控制台-->
<springProfile name="ci">
<!--可以输出项目中的debug日志,包括mybatis的sql日志-->
<logger name="com.asiainfo" level="INFO" />
<!--
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
可以包含零个或多个appender元素。
-->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="WARN_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
<!-- 测试环境:输出到文件 -->
<springProfile name="test">
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="WARN_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
<!-- 生产环境:输出到文件 -->
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="WARN_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
</configuration>

3190

被折叠的 条评论
为什么被折叠?



