線上服務器出現問題,需要臨時調整日志級別,明確定位問題。傳統的方法是修改日志配置文件logback-spring.xml,然后重啟,這樣比較慢,而且也可能漏掉因為重啟,導致問題無法立馬復現。 使用arthas可以不影響服務運行的情況下,動態調整日志級別
日志命令用法
- 常用用法
logger [-c <value>] [--classLoaderClass <value>] [-h] [--include-no-appender] [-l <value>] [-n <value>]
-c 類加載器hashcode
--classLoaderClass 類加載器
-l 設置的日志級別,比如debug、info
-n 日志名字,默認是ROOT
- 幫助命令
[arthas@5345]$ logger -h
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 value is SystemClassLoader
--classLoaderClass <value> The class name of the special class's classLoader.
-h, --help this help
--include-no-appender include the loggers which don't have appenders, default value false
-l, --level <value> set logger level
-n, --name <value> logger name
獲取日志信息
[arthas@5345]$ logger info -n ROOT
name ROOT
class ch.qos.logback.classic.Logger
classLoader org.springframework.boot.loader.LaunchedURLClassLoader@433c675d
classLoaderHash 433c675d
level DEBUG
effectiveLevel DEBUG
additivity true
codeSource jar:file:/data/worker/student-center/student-center.jar!/BOOT-INF/lib/logback-classic-1.2.11.jar!/
appenders name WARN
class ch.qos.logback.core.rolling.RollingFileAppender
classLoader org.springframework.boot.loader.LaunchedURLClassLoader@433c675d
classLoaderHash 433c675d
file logs/warn.log
name ALL
class ch.qos.logback.core.rolling.RollingFileAppender
classLoader org.springframework.boot.loader.LaunchedURLClassLoader@433c675d
classLoaderHash 433c675d
file logs/all.log
name WEWORK_ROBOT
class com.musk.ums.warning.WeworkRobotLogbackAppender
classLoader org.springframework.boot.loader.LaunchedURLClassLoader@433c675d
classLoaderHash 433c675d
- name: 日志名字
- classLoaderHash: 類加載器hashcode,后面會用到
- level: 當前的日志級別
- effectiveLevel: 有效的日志級別,因為日志級別會受到層級繼承影響,可能與level不一樣
設置日志級別
# -c 433c675d是類加載器的hashcode,從logger info的輸出結果中可以找到
[arthas@5345]$ logger -c 433c675d --name ROOT --level INFO
Update logger level success.