首先要求springboot 版本爲1.5.x之上。2.x未試驗過
下面我們就來看看Spring Boot 1.5.x中引入的一個新的控制端點:/loggers
,該端點將爲我們提供動態修改Spring Boot應用日誌級別的強大功能。該功能的使用非常簡單,它依然延續了Spring Boot自動化配置的實現。
首先導入依賴 actuator
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>1.5.12.RELEASE</version>
</dependency>
然後你需要構建一個springboot 應用 如果不會可見文章https://blog.csdn.net/java_ying/article/details/79657193
在application.propertie添加如下配置
management.security.enabled=false
不添加訪問會報401錯誤
添加測試接口
package com.hqjl.classcard.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author chunying
* @Date: 2019/7/18 0018
*/
@RestController
public class LogBackController {
private Logger log = LoggerFactory.getLogger(LogBackController.class);
@RequestMapping(value = "/logback")
public String logj(){
log.error("我是error");
log.warn("我是warn");
log.info("我是info");
log.debug("我是debug");
return "success";
}
}
使用logback來控制我們的日誌,reource下添加logback.xml
<configuration>
<property name="PROJECT_NAME" value="your projectName"/>
<property name="LOG_HOME" value="${catalina.base}/logs/${PROJECT_NAME}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss} %5level [%thread] [%logger{36}:%line] %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%date{HH:mm:ss} %-5level [%thread] [%logger{5}:%line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/${PROJECT_NAME}_%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>90</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
</appender>
<--這裏控制默認輸出級別爲warn-->
<root level="warn">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
<!--dubbo日誌輸出級別-->
<logger name="com.alibaba.dubbo" additivity="true" level="warn"/>
</configuration>
這裏的ip:port 爲你部署的ip和端口 如果放到測試機器 就是域名 如果是springboot直接啓動 還要加上項目包名或application.properties 的serv名稱 具體情況具體對待
啓動springboot 訪問 ip:port/logback
打印
我是error
我是warn
這裏其實有默認的方法
ip:port/loggers 這是個get方法
{
"levels": [
"OFF",
"ERROR",
"WARN",
"INFO",
"DEBUG",
"TRACE"
],
"loggers": {
"ROOT": {
"configuredLevel": "WARN",
"effectiveLevel": "WARN"
},
"com": {
"configuredLevel": null,
"effectiveLevel": "WARN"
},
"com.alibaba": {
"configuredLevel": null,
"effectiveLevel": "WARN"
},
"com.alibaba.dubbo": {
"configuredLevel": "WARN",
"effectiveLevel": "WARN"
},
"com.alibaba.dubbo.common": {
"configuredLevel": null,
"effectiveLevel": "WARN"
},
xxxxx
後面還有 就沒有全部複製 這裏需要自己搜索 包名看當前日誌的輸出級別
重點來了
更改日誌輸出級別
把上面的get方法變成post方法
ip:port/loggers/com.example (這裏是要修改的具體包名,我只是舉例)
參數
{
"configuredLevel": "DEBUG"
}
發送請求 如果爲200 基本就是成功了
回去在訪問接口 發現就是修改後的級別啦。
ps:我暫時沒有發現修改具體類的方法,發現了會補上
2019/07/19 補上修改類的 只要在包後面繼續 . 類名就可以了 比如: com.baidu.demo.Application(類名)
2019/12/13 發現新大陸
1.5.x版本也可以單獨控制每個
endpoints的訪問權限 通過
endpoints.loggers.sensitive=false 修改loggers的名稱就可以啦
可以把management那個配置去掉 那個控制範圍太大了 不利於使用
詳情見:https://blog.csdn.net/java_ying/article/details/103562286