前言
日常开发中,我们经常会对某些业务代码进行日志埋点,但是在查找某些故障的时候,如果想不停机的动态更改logger的日志级别,有没有简单的一种方式?比如我只想更改我指定类的日志级别。
Arthas Logger
[arthas@1]$ help logger
USAGE:
logger [-c <value>] [--classLoaderClass <value>] [-h] [--include-no-appender
] [-l <value>] [-n <value>]
SUMMARY:
Print logger info, and update the logger level
Examples:
logger
logger -c 327a647b
logger -c 327a647b --name ROOT --level debug
logger --include-no-appender
WIKI:
https://arthas.aliyun.com/doc/logger
OPTIONS:
-c, --classloader <value> classLoader hashcode, if no value is set, default v
alue is SystemClassLoader
--classLoaderClass <v The class name of the special class's classLoader.
alue>
-h, --help this help
--include-no-appender include the loggers which don't have appenders, def
ault value false
-l, --level <value> set logger level
-n, --name <value> logger name
Arthas Idea Plugin
我们结合IdeaPlugin在类上选择Logger,如下所示:
然后会弹出一个会话框,我们先要获取此class的hash值
生成的命令如下所示:
logger --name cn.gov.zcy.service.item.standard.scan.action.ChannelItemScanAction
Classloader Hash
[arthas@1]$ logger --name cn.gov.zcy.service.item.standard.scan.action.ChannelItemScanAction
name cn.gov.zcy.service.item.standard.scan.action.ChannelItemScanActio
n
class ch.qos.logback.classic.Logger
classLoader org.springframework.boot.loader.LaunchedURLClassLoader@59313495
classLoader 59313495
Hash
level null
effectiveLe INFO
vel
additivity true
codeSource jar:file:/opt/zcy/modules/app.jar!/BOOT-INF/lib/logback-classic-1
.2.3.jar!/
Setting Logger Level
然后在会话框中填入刚才拿到的Hash值,修改你想要的Logger Level,如下所示:
生成的命令如下所示:
logger --name cn.gov.zcy.service.item.standard.scan.action.ChannelItemScanAction --level trace -c 59313495
我们直接执行这个命令,如下所示:
[arthas@1]$ logger --name cn.gov.zcy.service.item.standard.scan.action.ChannelItemScanAction --level trace -c 59313495
Update logger level success.