99
1010``` bash
1111[arthas@2062]$ logger
12- name ROOT
13- class ch.qos.logback.classic.Logger
14- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
15- classLoaderHash 2a139a55
16- level INFO
17- effectiveLevel INFO
18- additivity true
19- codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
20- appenders name CONSOLE
21- class ch.qos.logback.core.ConsoleAppender
22- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
23- classLoaderHash 2a139a55
24- target System.out
25- name APPLICATION
26- class ch.qos.logback.core.rolling.RollingFileAppender
27- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
28- classLoaderHash 2a139a55
29- file app.log
30- name ASYNC
31- class ch.qos.logback.classic.AsyncAppender
32- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
33- classLoaderHash 2a139a55
34- appenderRef [APPLICATION]
12+ name ROOT
13+ class ch.qos.logback.classic.Logger
14+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
15+ classLoaderHash 5674cd4d
16+ level INFO
17+ effectiveLevel INFO
18+ additivity true
19+ codeSource jar:file:/home/scrapbook/tutorial/demo-arthas-spring-boot.jar! /BOOT-INF/lib/logback-classi
20+ c-1.1.11.jar! /
21+ appenders name CONSOLE
22+ class ch.qos.logback.core.ConsoleAppender
23+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
24+ classLoaderHash 5674cd4d
25+ target System.out
26+ ...
3527```
3628
3729
4133
4234``` bash
4335[arthas@2062]$ logger -n org.springframework.web
44- name org.springframework.web
45- class ch.qos.logback.classic.Logger
46- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
47- classLoaderHash 2a139a55
48- level null
49- effectiveLevel INFO
50- additivity true
51- codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
36+ name org.springframework.web
37+ class ch.qos.logback.classic.Logger
38+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
39+ classLoaderHash 5674cd4d
40+ level null
41+ effectiveLevel INFO
42+ additivity true
43+ codeSource jar:file:/home/scrapbook/tutorial/demo-arthas-spring-boot.jar! /BOOT-INF/lib/logback-classi
44+ c-1.1.11.jar! /
5245```
5346
54- 请记下你的classLoaderHash,后面需要使用它。在这里,它是 ` 2a139a55 ` 。
47+ 请记下你的classLoaderHash,后面需要使用它。在这里,它是 ` 5674cd4d ` 。
5548
5649注意:请使用你的classLoaderHash值覆盖 ` <classLoaderHash> ` ,然后手动执行下面所述命令:
5750
6255如果你使用` -c ` ,你需要手动输入hashcode:` -c <hashcode> `
6356
6457``` bash
65- $ logger -c 2a139a55
58+ $ logger -c 5674cd4d
6659```
6760
6861对于只有唯一实例的ClassLoader可以通过` --classLoaderClass ` 指定class name,使用起来更加方便:
6962
70- ` logger --classLoaderClass sun.misc.Launcher$AppClassLoader ` {{execute T2}}
63+ ` logger --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader ` {{execute T2}}
7164
7265``` bash
73- [arthas@2062]$ logger --classLoaderClass sun.misc.Launcher$AppClassLoader
74- name ROOT
75- class ch.qos.logback.classic.Logger
76- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
77- classLoaderHash 2a139a55
78- level DEBUG
79- effectiveLevel DEBUG
80- additivity true
81- codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
82- appenders name CONSOLE
83- class ch.qos.logback.core.ConsoleAppender
84- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
85- classLoaderHash 2a139a55
86- target System.out
87- name APPLICATION
88- class ch.qos.logback.core.rolling.RollingFileAppender
89- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
90- classLoaderHash 2a139a55
91- file app.log
92- name ASYNC
93- class ch.qos.logback.classic.AsyncAppender
94- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
95- classLoaderHash 2a139a55
96- appenderRef [APPLICATION]
66+ [arthas@2062]$ logger --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader
67+ name ROOT
68+ class ch.qos.logback.classic.Logger
69+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
70+ classLoaderHash 5674cd4d
71+ level INFO
72+ effectiveLevel INFO
73+ additivity true
74+ codeSource jar:file:/home/scrapbook/tutorial/demo-arthas-spring-boot.jar! /BOOT-INF/lib/logback-classi
75+ c-1.1.11.jar! /
76+ appenders name CONSOLE
77+ class ch.qos.logback.core.ConsoleAppender
78+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
79+ classLoaderHash 5674cd4d
80+ target System.out
81+ ...
9782```
9883
99- * 注: 这里classLoaderClass 在 java 8 是 sun.misc.Launcher$AppClassLoader,而java 11的classloader是jdk.internal.loader.ClassLoaders$AppClassLoader,katacoda目前环境是java8。
100-
10184` --classLoaderClass ` 的值是ClassLoader的类名,只有匹配到唯一的ClassLoader实例时才能工作,目的是方便输入通用命令,而` -c <hashcode> ` 是动态变化的。
10285
10386#### 更新logger level
@@ -109,16 +92,18 @@ $ logger -c 2a139a55
10992update logger level success.
11093```
11194
95+ 注意:在教程中执行会提示错误,需要指定classloader
96+
11297#### 指定classloader更新 logger level
11398
11499默认情况下,logger命令会在SystemClassloader下执行,如果应用是传统的` war ` 应用,或者spring boot fat jar启动的应用,那么需要指定classloader。
115100
116101可以先用 ` sc -d yourClassName ` 来查看具体的 classloader hashcode,然后在更新level时指定classloader:
117102
118- ` logger --classLoaderClass sun.misc.Launcher$AppClassLoader --name ROOT --level debug ` {{execute T2}}
103+ ` logger --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --name ROOT --level debug ` {{execute T2}}
119104
120105``` bash
121- [arthas@2062]$ logger --classLoaderClass sun.misc.Launcher $AppClassLoader --name ROOT --level debug
106+ [arthas@2062]$ logger --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --name ROOT --level debug
122107```
123108
124109#### 查看没有appender的logger的信息
@@ -132,46 +117,18 @@ update logger level success.
132117
133118``` bash
134119[arthas@2062]$ logger --include-no-appender
135- name ROOT
136- class ch.qos.logback.classic.Logger
137- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
138- classLoaderHash 2a139a55
139- level DEBUG
140- effectiveLevel DEBUG
141- additivity true
142- codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
143- appenders name CONSOLE
144- class ch.qos.logback.core.ConsoleAppender
145- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
146- classLoaderHash 2a139a55
147- target System.out
148- name APPLICATION
149- class ch.qos.logback.core.rolling.RollingFileAppender
150- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
151- classLoaderHash 2a139a55
152- file app.log
153- name ASYNC
154- class ch.qos.logback.classic.AsyncAppender
155- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
156- classLoaderHash 2a139a55
157- appenderRef [APPLICATION]
158-
159- name com
160- class ch.qos.logback.classic.Logger
161- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
162- classLoaderHash 2a139a55
163- level null
164- effectiveLevel DEBUG
165- additivity true
166- codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
167-
168- name com.alibaba
169- class ch.qos.logback.classic.Logger
170- classLoader sun.misc.Launcher$AppClassLoader @2a139a55
171- classLoaderHash 2a139a55
172- level null
173- effectiveLevel DEBUG
174- additivity true
175- codeSource file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
120+ name org.thymeleaf
121+ class ch.qos.logback.classic.Logger
122+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
123+ classLoaderHash 5674cd4d
124+ level null
125+ effectiveLevel INFO
126+ additivity false
127+ codeSource jar:file:/home/scrapbook/tutorial/demo-arthas-spring-boot.jar! /BOOT-INF/lib/logback-classi
128+ c-1.1.11.jar! /
129+ appenders name DEBUG_LEVEL_REMAPPER
130+ class org.springframework.boot.logging.logback.LevelRemappingAppender
131+ classLoader org.springframework.boot.loader.LaunchedURLClassLoader@5674cd4d
132+ classLoaderHash 5674cd4d
176133...
177134```
0 commit comments