Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


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

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

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

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

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