springboot 1.5.x slf4j + logback 動態修改日誌輸出級別與actuator權限控制

首先要求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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章