最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot監(jiān)聽Nacos動(dòng)態(tài)修改日志級(jí)別的操作方法

 更新時(shí)間:2023年12月01日 15:09:17   作者:W_Meng_H  
線上系統(tǒng)的日志級(jí)別一般都是 INFO 級(jí)別,有時(shí)候需要查看 WARN 級(jí)別的日志,所以需要?jiǎng)討B(tài)修改日志級(jí)別,微服務(wù)項(xiàng)目中使用 Nacos 作為注冊中心,我們可以監(jiān)聽 Nacos 配置,修改日志級(jí)別,這篇文章主要介紹了SpringBoot監(jiān)聽Nacos動(dòng)態(tài)修改日志級(jí)別的操作方法,需要的朋友可以參考下

線上系統(tǒng)的日志級(jí)別一般都是 INFO 級(jí)別,有時(shí)候需要查看 WARN 級(jí)別的日志,所以需要?jiǎng)討B(tài)修改日志級(jí)別。微服務(wù)項(xiàng)目中使用 Nacos 作為注冊中心,我們可以監(jiān)聽 Nacos 配置,修改日志級(jí)別。

一、pom文件

<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.18</version>
        </dependency>
		<!--注冊中心客戶端-->
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
			<version>2021.0.4.0</version>
        </dependency>
        <!--配置中心客戶端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
			<version>2021.0.4.0</version>
        </dependency>
		<!--Lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

二、項(xiàng)目配置文件增加如下內(nèi)容

nacos:
  config:
    # 配置文件
    filename: nacos-provider-log-level.json
	# 配置GROUP
    group: DEFAULT_GROUP
	# 配置項(xiàng)key
    log:
      level: log.level

三、日志配置文件

{
    "log.level":"info"
}

四、日志監(jiān)聽類

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
import com.meng.backend.service.LogLevelChangeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import java.util.Properties;
import java.util.concurrent.Executor;
/**
 * @Author: meng
 * @Description: 監(jiān)聽Nacos
 * @Date: 2023/6/5 9:52
 * @Version: 1.0
 */
@Slf4j
@Configuration
public class LoggerConfigListener {
	/**
	 * 配置中心地址
	 */
	@Value("${spring.cloud.nacos.discovery.server-addr}")
	private String serverAddr;
	/**
	 * 命名空間ID
	 */
	// @Value("${nacos.config.namespace}")
	// private String namespace;
	/**
	 * 配置文件
	 */
	@Value("${nacos.config.filename}")
	private String dataId;
	/**
	 * 配置GROUP
	 */
	@Value("${nacos.config.group}")
	private String group;
	/**
	 * 配置項(xiàng)key
	 */
	@Value("${nacos.config.log.level}")
	private String logLevelName;
	@Autowired
	private LogLevelChangeService logLevelChangeService;
	/**
	 * 動(dòng)態(tài)修改日志級(jí)別
	 */
	@PostConstruct
	public void init() {
		try {
			log.info("init NacosConfigListener start...");
			Properties properties = new Properties();
			properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
			// properties.put(PropertyKeyConst.NAMESPACE, namespace);
			ConfigService configService = NacosFactory.createConfigService(properties);
			String content = configService.getConfig(dataId, group, 5000);
			if (StrUtil.isBlank(content)) {
				log.info("log config is empty");
				return;
			}
			log.info("log config is :{}", content);
			configService.addListener(dataId, group, new Listener() {
				@Override
				public void receiveConfigInfo(String configInfo) {
					try {
						JSONObject jsonObject = JSONObject.parseObject(configInfo);
						Object levelObj = jsonObject.get(logLevelName);
						if (levelObj != null) {
							logLevelChangeService.changeLogLevel(levelObj.toString());
						}
					}
					catch (Exception e) {
						log.error("receiveConfigInfo exception:", e);
					}
				}
				@Override
				public Executor getExecutor() {
					return null;
				}
			});
			log.info("init NacosConfigListener end...");
		}
		catch (NacosException e) {
			log.error("NacosConfigListener exception:{}", e.getMessage());
		}
	}
}

五、日志動(dòng)態(tài)修改服務(wù)類

/**
 * @Author: meng
 * @Description: 動(dòng)態(tài)調(diào)整日志級(jí)別
 * @Date: 2023/6/5 9:56
 * @Version: 1.0
 */
public interface LogLevelChangeService {
	boolean changeLogLevel(String level);
}
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import com.meng.backend.service.LogLevelChangeService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
/**
 * @Author: meng
 * @Description: 動(dòng)態(tài)調(diào)整日志級(jí)別
 * @Date: 2023/6/5 9:56
 * @Version: 1.0
 */
@Slf4j
@Service
public class LogLevelChangeServiceImpl implements LogLevelChangeService {
	@Override
	public boolean changeLogLevel(String level) {
		try {
			log.info("level:{}", level);
			LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
			Logger logger = loggerContext.getLogger("ROOT");
			switch (level) {
				case "trace":
					logger.setLevel(Level.TRACE);
					break;
				case "debug":
					logger.setLevel(Level.DEBUG);
					break;
				case "info":
					logger.setLevel(Level.INFO);
					break;
				case "warn":
					logger.setLevel(Level.WARN);
					break;
				case "error":
					logger.setLevel(Level.ERROR);
					break;
				default:
					break;
			}
			return true;
		}
		catch (Exception e) {
			log.error("changeLogLevel exception:", e);
			return false;
		}
	}
}

到此這篇關(guān)于SpringBoot監(jiān)聽Nacos動(dòng)態(tài)修改日志級(jí)別的文章就介紹到這了,更多相關(guān)SpringBoot動(dòng)態(tài)修改日志級(jí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring導(dǎo)入framework報(bào)紅問題

    spring導(dǎo)入framework報(bào)紅問題

    這篇文章主要介紹了spring導(dǎo)入framework報(bào)紅問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java實(shí)現(xiàn)jdbc查詢結(jié)果集result轉(zhuǎn)換成對(duì)應(yīng)list集合

    java實(shí)現(xiàn)jdbc查詢結(jié)果集result轉(zhuǎn)換成對(duì)應(yīng)list集合

    本文給大家匯總介紹了java實(shí)現(xiàn)jdbc查詢結(jié)果集result轉(zhuǎn)換成對(duì)應(yīng)list集合,十分的簡單,有相同需求的小伙伴可以參考下。
    2015-12-12
  • java字符串格式化(String類format方法)

    java字符串格式化(String類format方法)

    這篇文章主要介紹了java字符串格式化(String類format方法),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SpringBoot項(xiàng)目開發(fā)常用技術(shù)整合

    SpringBoot項(xiàng)目開發(fā)常用技術(shù)整合

    今天給大家分享springboot項(xiàng)目開發(fā)常用技術(shù)整合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08
  • Java實(shí)現(xiàn)將Boolean轉(zhuǎn)為Json對(duì)象的方法

    Java實(shí)現(xiàn)將Boolean轉(zhuǎn)為Json對(duì)象的方法

    在Java中,將boolean值轉(zhuǎn)換為JSON對(duì)象通常涉及使用JSON庫,例如org.json或Gson,這里我們將使用org.json庫來進(jìn)行詳細(xì)演示,這個(gè)庫提供了簡單且直觀的方法來創(chuàng)建和操作JSON對(duì)象,需要的朋友可以參考下
    2024-11-11
  • 詳解Spring Boot讀取配置文件與配置文件優(yōu)先級(jí)

    詳解Spring Boot讀取配置文件與配置文件優(yōu)先級(jí)

    這篇文章主要介紹了詳解Spring Boot讀取配置文件與配置文件優(yōu)先級(jí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • 關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法

    關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法

    這篇文章主要給大家介紹了關(guān)于Poi讀取Excel引發(fā)內(nèi)存溢出問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Spring Cloud之配置中心的搭建

    Spring Cloud之配置中心的搭建

    這篇文章主要介紹了Spring Cloud之配置中心的搭建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • SpringCloud使用Nacos保存和讀取變量的配置方法

    SpringCloud使用Nacos保存和讀取變量的配置方法

    在使用SpringCloud開發(fā)微服務(wù)時(shí),經(jīng)常會(huì)遇到一些比較小的后臺(tái)參數(shù)配置,這些配置不足以單獨(dú)開一張表去存儲(chǔ),而且其他服務(wù)會(huì)讀取該參數(shù),這篇文章主要介紹了SpringCloud使用Nacos保存和讀取變量,需要的朋友可以參考下
    2022-07-07
  • java實(shí)現(xiàn)簡單控制臺(tái)通訊錄

    java實(shí)現(xiàn)簡單控制臺(tái)通訊錄

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單控制臺(tái)通訊錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論

松潘县| 湖口县| 孟州市| 合阳县| 县级市| 醴陵市| 孙吴县| 平远县| 阳泉市| 佛冈县| 河曲县| 嘉定区| 龙南县| 东至县| 芦溪县| 井冈山市| 天全县| 青龙| 化德县| 页游| 宣威市| 长泰县| 靖安县| 依安县| 衡山县| 星座| 屯昌县| 余江县| 化德县| 竹北市| 曲靖市| 邓州市| 清徐县| 连城县| 精河县| 五家渠市| 洞口县| 武威市| 炎陵县| 洛扎县| 湾仔区|