生產環境中常常有須要動態修改日誌級別。 如今就介紹幾種方案web
配置以下spring
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- configuration標籤 scan屬性表明logback框架會定時檢測改配置文件是否有發生改動,若是有則更新爲最新配置-->
而後就將修改的配置文件拷貝到app.jar的同級目錄下config/logback.xmlapi
代碼以下springboot
/** * log api * @author lipeng */ @RequestMapping("/api/log") @RestController public class LogbackController { private Logger log = LoggerFactory.getLogger(LogbackController.class); /** * logback動態修改包名的日誌級別 * @param level 日誌級別 * @param packageName 包名 * @return 當前的日誌級別 * @throws Exception */ @RequestMapping(value = "/setlevel") public String updateLogbackLevel( @RequestParam(value="level") String level, @RequestParam(value="packageName",defaultValue = "-1") String packageName) throws Exception { ch.qos.logback.classic.LoggerContext loggerContext =(ch.qos.logback.classic.LoggerContext) LoggerFactory.getILoggerFactory(); Logger logger= null if(packageName.equals("-1")) { // 默認值-1,更改全局日誌級別;不然按傳遞的包名或類名修改日誌級別。 logger= loggerContext.getLogger("root") } else { logger= loggerContext.getLogger(packageName) } logger.setLevel(ch.qos.logback.classic.Level.toLevel(level)); return logger.getLevel(); } }
一、pom.xml增長相關依賴app
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
一、配置文件中增長配置 若是是springboot1.X,框架
management.security.enabled=false
若是是springboot2.X,則參考以下配置spring-boot
management: endpoint: health: show-details: "ALWAYS" endpoints: web: exposure: include: "*"
三、查看級別 咱們能夠發送GET 請求到 http://localhost:8080/actuator/loggers 來獲取支持的日誌等級,以及系統(ROOT)默認的日誌等和各個包路徑(com.xxx.aa等)對應的日誌級別。 四、修改日誌級別 經過 http://localhost:8080/actuator/loggers 端點提供的 POST 請求,修改包路徑com.xxx.aa的日誌級別爲DEBUG:debug
發送POST 請求到 http://localhost:8080/actuator/loggers/com.xxx.aa,其中請求 Body 的內容以下:日誌
{ "configuredLevel": "DEBUG" }
再用GET 訪問 http://localhost:8080/loggers/com.xxx.aa查看當前的日誌級別:code
{ configuredLevel: "DEBUG", effectiveLevel: "INFO" }
springcloudadmin安裝部署我就不作描述了,網上不少。 一、引入admin依賴
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
二、登陸springcloudadmin,找到指定的服務中某一個節點 而後點擊左邊日期,進入控制檯,以下 這樣就能動態修改了,操做比較方便。
在條件容許的狀況下建議使用方案四