IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> nace服务配置中心,对日志输出的操作,以及对nacos 命名空间的分组等操作 -> 正文阅读

[Java知识库]nace服务配置中心,对日志输出的操作,以及对nacos 命名空间的分组等操作

Nacos服务配置中心应用实践

基于Spring Boot的日志输出

添加@Slf4j注解,该注解会生成一个静态的log对象用于调用该对象输出日志

    @GetMapping("/provider/echo/{msg}")
    public String doRestEcho1(
            @PathVariable("msg") String msg) throws InterruptedException {
        log.info("doRestEcho1 start{}",System.currentTimeMillis());//{}表示占位符
        return serverPort+" say hello "+msg;
    }

在这里插入图片描述其中log对象是基于SELF4 API创建,也可以基于注解对象指定类进行描述,来创建日志对象

业务描述

基于nacos配置中心,实现日志级别的动态配置,然后基于日志级别动态调整服务中日志信息的输出

添加依赖

在已有的mu_provider项目中添加依赖

  <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>

修改配置文件

将项目中的application.yml的名字修改为bootstrap.yml配置文件(该文件启动优先级最高)

spring:
  application:
    name: mu-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml # Configure the data format of the content, default to properties
        group: DEFAULT_GROUP_MU
        #不加该属性会默认读取DEFAULT_GROUP中的配置

新建Nacos匹配值

在这里插入图片描述
其中Data ID的值要与bootstrap.yml中定义的spring.application.name的值相]同(服务名-假如有多个服务一般会创建多个配置实例,不同服务对应不同的配置实例)。

发布测试

Nacos 动态刷新机制分析

1.在服务提供方的Controller添加一个方法

		@Value("${logging.level.org.mubai:error}")
        private String logLevel;
        @GetMapping("/provider/doGetLogLevel")
        public String doGetLogLevel(){
            log.trace("==log.trace==");//跟踪
            log.debug("==log.debug==");//调试
            log.info("==log.info==");//常规信息
            log.warn("==log.warn==");//警告
            log.error("==log.error==");//错误信息
            return "log level is "+logLevel;
        }

2.在类上添加注解

	@RefreshScope //加了该注解spring会动态的重新刷新配置中心的数据
    @RestController
    public class ProviderController{

其中,@RefreshScope的作用是在配置中心的相关配置发生变化以后,能够及时看到类中属性值的更新(底层是通过重新创建Controller对象的方式,对属性进行了重新初始化),Controller编写好以后,启动配置中心服务,然后进行访问测试。,打开浏览器直接在地址栏输入http://localhost:8082/provider/doGetLogLevel,检测输出结果是否为我们配置中配置的信息,如图所示。

修改日志输出的格式和输出的磁盘地址

在这里插入图片描述

#日志配置
#logging:
#  level:
#    com.cy: error
#spring boot日志格式
#logging:
#  pattern:
#    console: '%-5level %msg %n'
#    file: '%d %-5level %thread %logger %msg %n'
# %d 表示日期时间
# %-5level 日志级别
# %thread 线程名‘
# %logger 日志输出方(哪个类中输出的日志)
# %msg 具体的日志信息
# %n 换行

Nacos配置管理模型

在这里插入图片描述

  • Namespace:命名空间,对不同的环境进?隔离,?如隔离开发环境和?产环境。
  • Group:分组,将若?个服务或者若?个配置集归为?组。
  • Service/DataId:某?个服务或配置集,一般对应一个配置文件。
    1.创建新命名空间
    在这里插入图片描述

在指定命名空间下添加配置,也可以直接克隆配置
在这里插入图片描述修改项目module中的配置文件bootstrap.yml,添加如下配置,关键代码如下:

spring:
  cloud:
    nacos:
      config:
        namespace: 4b614b5b-248d-4da9-a442-873aec47b4ba

其中,namespace后面的字符串为命名空间的id,可直接从命名空间列表中进行拷贝.
重启服务,继续刷新http://localhost:8081/config/doGetLogLevel地址。检测输出,看看输出的内容是什么,是否为dev-mu命名空间下配置的内容

分组设计及实现
当我们在指定命名空间下,按环境或服务做好了配置以后,有时还需要基于服务做分组配置,例如,一个服务在不同时间节点(节假日,活动等)切换不同的配置,可以在新建配置时指定分组名称,如图所示:
在这里插入图片描述
修改 group ,在controller中添加代码访问

        @Value("${server.tomcat.threads.max:200}")
        private String MaxThreads;
        @RequestMapping("/doGetThread")
        public String doGetThread(){
            return MaxThreads;
        }

共享配置设计及读取

第一步:在nacos中创建一个共享配置文件,例如:
在这里插入图片描述第二步:在指定的微服务配置文件(bootstrap.yml)中设置对共享配置文件的读取,例如:
见红色区域内容。

 config:
        server-addr: 127.0.0.1:8848
        file-extension: yml # Configure the data format of the content, default to properties
        namespace: 4b614b5b-248d-4da9-a442-873aec47b4ba
        group: DEFAULT_GROUP_51
        shared-configs[0]:
          data-id: app-public-dev.yml
          refresh: true #默认false,共享配置更新,引用此

第三步:在指定的Controller类中读取和应用共享配置即可,例如:

@RefreshScope
@RestController
public class ProviderPageController {
    @Value("${page.pageSize:10}")
    private Integer pageSize;
    @GetMapping("/provider/doGetPageSize")
    public String doGetPageSize(){
        //return String.format()
        return "page size is "+pageSize;
    }
}

第四步:启动服务进行访问测试。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:00:25  更:2021-09-18 10:02:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:21:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码