Arthas 常用命令
官方文档:Arthas 命令列表
启动 Arthas
1 | wget https://alibaba.github.io/arthas/arthas-demo.jar |
注意退出的时候要 stop
, 用 quit
不会退出.
开启日志
默认情况下,该功能是关闭的,如果需要开启,请执行以下命令:
1 | $ options save-result true |
看到上面的输出,即表示成功开启该功能;
日志文件路径: 结果会异步保存在:{user.home}/logs/arthas-cache/result.log,请定期进行清理,以免占据磁盘空间
输出指定数据: watch com.enableets.edu.assessment.framework.reportV2.factory.AbstractReportFactory dataSliceQuery '{params,returnObj}' -x 6 > dataSliceQuery.txt
文件会存储至 jar
包目录
watch
watch 依次参数:接口地址 方法名称 ognl表达式 观察模式(可不需要)
打印方法第一个入参:
1
watch com.test.xxx query 'params[0]'
打印入参和返回值
1
watch com.xxx.Service xxxFunction '{params,returnObj}' -x 6
如果入参是对象,打印的是对象地址,可通过参数名
params[0].name
或调用JSON转换成字符串,也可以使用-x 3(遍历属性深度层次数)
1
watch com.test.xxx query '@com.alibaba.fastjson.JSON@toJSON({params[0]})[0]'
1
watch com.test.xxx query '{params[0]}' -b -x 3
SC
- 查找
classLoaderHash
1
2# 随便找一个实例即可获取 classLoaderHash
sc -d com.test.xxx.util.BeanUtils | grep classLoaderHash
ognl
可通过 ognl
表达式执行某个静态方法
- 修改某个对象的
debug
级别1
ognl -c 5b2133b1 '@com.test.xxx.service.CommCacheDataService@LOGGER.setLevel(@ch.qos.logback.classic.Level@INFO)'
- 修改全局的
debug
级别1
ognl -c 5b2133b1 '@org.slf4j.LoggerFactory@getLogger("root").setLevel(@ch.qos.logback.classic.Level@INFO)'