springboot 1.5.x slf4j + logback 动态修改日志输出级别与actuator权限控制

首先要求springboot 版本为1.5.x之上。2.x未试验过

下面我们就来看看Spring Boot 1.5.x中引入的一个新的控制端点:/loggers,该端点将为我们提供动态修改Spring Boot应用日志级别的强大功能。该功能的使用非常简单,它依然延续了Spring Boot自动化配置的实现。

首先导入依赖 actuator


    org.springframework.boot
    spring-boot-actuator
    1.5.12.RELEASE

然后你需要构建一个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 

    
    

    
        
            %date{HH:mm:ss} %5level [%thread] [%logger{36}:%line] %msg%n
        
    

    
        
            %date{HH:mm:ss} %-5level [%thread] [%logger{5}:%line] %msg%n
        
        
            ${LOG_HOME}/%d{yyyy-MM-dd}/${PROJECT_NAME}_%i.log
            10MB
            90
            20GB
        
    

<--这里控制默认输出级别为warn-->
    
        
        
    
    
    

这里的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

你可能感兴趣的:(java,springboot)