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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值