Arthas 使用 logger 不停机更新 Spring Boot logback 日志等级

Arthas logback Spring Boot 大约 4087 字

前提

使用java -jar arthas-boot.jarattach到运行中的Spring Boot服务。

logback 部分配置及部分代码

logback部分配置

<root level="INFO">
    <appender-ref ref="FILE_APPENDER_ASYNC"/>

    <appender-ref ref="CONSOLE"/>
</root>

<logger name="com.example" level="INFO"/>

部分代码

package com.example.arthas.task;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Random;

@Slf4j
@Component
public class Task1 {

    @Scheduled(fixedRate = 3000)
    public void task1() throws InterruptedException {
        log.debug("task111 fixedRate now#{}", LocalDateTime.now());
        Random random = new Random();
        int i = random.nextInt(10);
        Thread.sleep(i * 1000);
    }

}

查看当前运行时 logback 配置

查看 root 配置

logger

默认logger命令输出的是root的信息。

[arthas@22224]$ logger
 name                               ROOT
 class                              ch.qos.logback.classic.Logger
 classLoader                        sun.misc.Launcher$AppClassLoader@18b4aac2
 classLoaderHash                    18b4aac2
 level                              INFO
 effectiveLevel                     INFO
 additivity                         true
 codeSource                         file:/D:/Dev/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
 appenders                          name            FILE_APPENDER
                                    class           ch.qos.logback.core.rolling.RollingFileAppender
                                    classLoader     sun.misc.Launcher$AppClassLoader@18b4aac2
                                    classLoaderHash 18b4aac2
                                    file            logs/log-info.log
                                    name            FILE_APPENDER_ASYNC
                                    class           ch.qos.logback.classic.AsyncAppender
                                    classLoader     sun.misc.Launcher$AppClassLoader@18b4aac2
                                    classLoaderHash 18b4aac2
                                    blocking        false
                                    appenderRef     [FILE_APPENDER]
                                    name            CONSOLE
                                    class           ch.qos.logback.core.ConsoleAppender
                                    classLoader     sun.misc.Launcher$AppClassLoader@18b4aac2
                                    classLoaderHash 18b4aac2
                                    target          System.out

查看指定包配置

logger -n com.example

输出

[arthas@26376]$ logger -n com.example
 name                               com.example
 class                              ch.qos.logback.classic.Logger
 classLoader                        sun.misc.Launcher$AppClassLoader@18b4aac2
 classLoaderHash                    18b4aac2
 level                              INFO
 effectiveLevel                     INFO
 additivity                         true
 codeSource                         file:/D:/Dev/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

查看指定类配置

logger -n com.example.arthas.task.Task1

输出

[arthas@26376]$ logger -n com.example.arthas.task.Task1
 name                               com.example.arthas.task.Task1
 class                              ch.qos.logback.classic.Logger
 classLoader                        sun.misc.Launcher$AppClassLoader@18b4aac2
 classLoaderHash                    18b4aac2
 level                              null
 effectiveLevel                     INFO
 additivity                         true
 codeSource                         file:/D:/Dev/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

更改 root 日志等级

更改了rootlevel使得第三方依赖的日志也将输出。

logger --name ROOT --level debug

更改指定包的日志等级

更改com.example包的日志等级为debug(启动时logback配置的是info)。

-n--name是相同指令。

logger -n com.example --level debug

更改指定类的日志等级

logger -n com.example.arthas.task.Task1 --level debug

备注

即使Arthas停止退出了,但日志等级将会一直是更改过后的。

完整版下载地址

https://github.com/alibaba/arthas/releases

阅读 61 · 发布于 2021-04-25

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批