arthas-boot.jar 或者 as.sh 的版本: 3.1.0arthas-boot的版本: 3.1.0update logger level success
update logger level fail
arthas异常堆栈
01 2019-11-08 14:20:15.502 ERROR [as-command-execute-daemon:arthas] [] [] [arthas] logger command update logback level error
java.lang.ClassNotFoundException: com.taobao.arthas.core.command.logger.LogbackHelper5afdafe870dea4e
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at com.taobao.arthas.core.command.logger.LoggerCommand.updateLevel(LoggerCommand.java:345)
at com.taobao.arthas.core.command.logger.LoggerCommand.level(LoggerCommand.java:144)
at com.taobao.arthas.core.command.logger.LoggerCommand.process(LoggerCommand.java:122)
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:370)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
sc 命令能查看到两个类:
com.taobao.arthas.core.command.logger.LogbackHelper5afdafe831cefde0
com.taobao.arthas.core.command.logger.LogbackHelper
sc -d com.taobao.arthas.core.command.logger.LogbackHelper5afdafe831cefde0
结果:
class-info com.taobao.arthas.core.command.logger.LogbackHelper5afdafe831cefde0
code-source /home/work/.arthas/lib/3.1.4/arthas/arthas-core.jar
name com.taobao.arthas.core.command.logger.LogbackHelper5afdafe831cefde0
isInterface false
isAnnotation false
isEnum false
isAnonymousClass false
isArray false
isLocalClass false
isMemberClass false
isPrimitive false
isSynthetic false
simple-name LogbackHelper5afdafe831cefde0
modifier public
annotation
interfaces
super-class +-java.lang.Object
class-loader +-org.springframework.boot.loader.LaunchedURLClassLoader@31cefde0
+-sun.misc.Launcher$AppClassLoader@70dea4e
+-sun.misc.Launcher$ExtClassLoader@335ff8d5
classLoaderHash 31cefde0
最好能提供可重现的demo
仔细看了一下文档和源码,指定classloader后成功了
logger -c31cefde0 -n org.apache.coyote.http11.Http11InputBuffer -l DEBUG
遇到了同样的问题 通过指定classloader解决了 但是文档中并没有提到需要显式置顶classloader啊
[arthas@5195]$ logger --name org.apache.ibatis.logging --level info
update logger level fail.
[arthas@5195]$ logger -c 439f5b3d --name org.apache.ibatis.logging --level info
update logger level success.
@zhugw 欢迎提交pr改进文档
Most helpful comment
仔细看了一下文档和源码,指定classloader后成功了