|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="zh-CN">
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="generator" content="VuePress 2.0.0-beta.51">
|
|
|
|
<style>
|
|
|
|
:root {
|
|
|
|
--c-bg: #fff;
|
|
|
|
}
|
|
|
|
html.dark {
|
|
|
|
--c-bg: #22272e;
|
|
|
|
}
|
|
|
|
html, body {
|
|
|
|
background-color: var(--c-bg);
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<script>
|
|
|
|
const userMode = localStorage.getItem('vuepress-color-scheme');
|
|
|
|
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
|
|
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
|
|
|
|
document.documentElement.classList.toggle('dark', true);
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<link rel="icon" href="/images/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:title" content="Arthas"><meta property="og:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image" content="/images/arthas_mate_image.png"><meta property="og:description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="600"><meta property="twitter:image:src" content="/images/arthas_mate_image.png"><meta property="twitter:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta itemprop="name" content="Arthas"><meta itemprop="image" content="/images/arthas_mate_image.png"><meta itemprop="description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><script>
|
|
|
|
var _hmt = _hmt || [];
|
|
|
|
(function() {
|
|
|
|
var hm = document.createElement("script");
|
|
|
|
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
|
|
|
|
var s = document.getElementsByTagName("script")[0];
|
|
|
|
s.parentNode.insertBefore(hm, s);
|
|
|
|
})();
|
|
|
|
</script><meta name="aes-config" content="pid=xux-opensource&user_type=101&uid=&username=&dim10=arthas"><script src="//g.alicdn.com/alilog/mlog/aplus_v2.js" id="beacon-aplus" exparams="clog=o&aplus&sidx=aplusSidx&ckx=aplusCkx"></script><script src="//g.alicdn.com/aes/??tracker/1.0.34/index.js,tracker-plugin-pv/2.4.5/index.js,tracker-plugin-event/1.2.5/index.js,tracker-plugin-jserror/1.0.13/index.js,tracker-plugin-api/1.1.14/index.js,tracker-plugin-perf/1.1.8/index.js,tracker-plugin-eventTiming/1.0.4/index.js"></script><title>groovy | arthas</title><meta name="description" content="arthas 使用文档">
|
|
|
|
<link rel="modulepreload" href="/assets/app.977e81c1.js"><link rel="modulepreload" href="/assets/groovy.html.952384a3.js"><link rel="modulepreload" href="/assets/groovy.html.5effbaba.js"><link rel="prefetch" href="/assets/index.html.9412a900.js"><link rel="prefetch" href="/assets/index.html.3c03373d.js"><link rel="prefetch" href="/assets/index.html.31581b5f.js"><link rel="prefetch" href="/assets/advanced-use.html.3876077d.js"><link rel="prefetch" href="/assets/advice-class.html.e0d4601b.js"><link rel="prefetch" href="/assets/agent.html.ea7c22e0.js"><link rel="prefetch" href="/assets/arthas-properties.html.4eb539b4.js"><link rel="prefetch" href="/assets/arthas3.html.bee7bffc.js"><link rel="prefetch" href="/assets/async.html.473d320c.js"><link rel="prefetch" href="/assets/auth.html.ac4b67f2.js"><link rel="prefetch" href="/assets/base64.html.4b181e89.js"><link rel="prefetch" href="/assets/batch-support.html.a26e2295.js"><link rel="prefetch" href="/assets/cat.html.c8fbb1c5.js"><link rel="prefetch" href="/assets/classloader.html.04ede152.js"><link rel="prefetch" href="/assets/cls.html.315127c2.js"><link rel="prefetch" href="/assets/commands.html.205fab1f.js"><link rel="prefetch" href="/assets/contact-us.html.259f35c3.js"><link rel="prefetch" href="/assets/dashboard.html.72692286.js"><link rel="prefetch" href="/assets/docker.html.37a9000f.js"><link rel="prefetch" href="/assets/download.html.e9e19894.js"><link rel="prefetch" href="/assets/dump.html.aac38ab5.js"><link rel="prefetch" href="/assets/echo.html.7dac4c37.js"><link rel="prefetch" href="/assets/faq.html.0788d4da.js"><link rel="prefetch" href="/assets/getstatic.html.2a0b4f73.js"><link rel="prefetch" href="/assets/grep.html.09b9f3d8.js"><link rel="prefetch" href="/assets/heapdump.html.a85cf9a1.js"><link rel="prefetch" href="/assets/help.html.e5f40d88.js"><link rel="prefetch" href="/assets/history.html.9c7d2f2e.js"><link rel="prefetch" href="/assets/http-api.html.693537fc.js"><link rel="prefetch" href="/assets/idea-plugin.html.0e7ca126.js"><link rel="prefetch" href="/assets/install-detail.html.2265e71c.js"><link rel="prefetch" href="/assets/jad.html.6682b060.js"><link rel="prefetch" href="/assets/jfr.html.4a6ffa9b.js"><link rel="prefetch" href="/assets/jvm.html.bf9d7353.js"><link rel="prefetch" href="/assets/keymap.html.4a935f93.js"><link rel="prefetch" href="/assets/logger.html.1626eaca.js"><link rel="prefetch" href="/assets/manual-install.html.7d61ca70.js"><link rel="prefetch" href="/assets/mbean.html.30acbef7.js"><link rel="prefetch" href="/assets/mc.html.2ccc704e.js"><link rel="prefetch" href="/assets/memory.html.354446c2.js"><link rel="prefetch" href="/assets/monitor.html.c7c0dac3.js"><link rel="prefetch" href="/assets/ognl.html.56febc20.js"><link rel="prefetch" href="/assets/options.html.f2203677.js"><link rel="prefetch" href="/assets/perfcounter.html.4783a666.js"><link rel="prefetch" href="/assets/profiler.html.0af96094.js"><link rel="prefetch" href="/assets/pwd.html.bb923193.js"><link rel="prefetch" href="/assets/quick-start.html.3b81c79e.js"><link rel="prefetch" href="/assets/quit.html.bc71e5cc.js"><link rel="prefetch" href="/assets/redefine.html.c762575e.js"><link rel="prefetch" href="/assets/release-notes.html.fef92c13.js"><link rel="prefetch" href="/assets/reset.html.05dc82b5.js"><link rel="prefetch" href="/assets/retransform.html.21fa57be.js"><link rel="prefetch" href="/assets/save-log.html.8b792c19.js"><link rel="prefetch" href="/assets/sc.html.9e910d92.js"><link rel="prefetch" href="/assets/session.html.620f0ab0.js"><link rel="prefetch" href="/assets/sm.html.00c3d56b.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.07a5bd45.js"><link rel="prefetch" href="/assets/stack.html.17704cc3.js"><link rel="prefetch" href="/assets/start-arthas.html.f299d09e.js"><link rel="prefetch" href="/assets/stop.html.75db3522.js"><link rel="prefetch" href="/assets/sysenv.html.fcd3f33c.js"><link rel="prefetch" href="/assets/sysprop.html.f64847c1.js"><link rel="prefetch" href="/assets/tee.html.6c47fb2b.js"><link rel="prefetch" href="/assets/thread.html.222deb53.j
|
|
|
|
<link rel="stylesheet" href="/assets/style.cf0d4c26.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="切换侧边栏" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class="" data-v-a8869d06><!----><span class="site-name can-hide" data-v-a8869d06>arthas</span><span class="navbar-version" data-v-a8869d06>v3.7.2</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="/doc/arthas-tutorials.html?language=cn&id=arthas-basics" rel="noopener noreferrer" target="_blank" aria-label="在线教程"><!--[--><!--]--><span>在线教程</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/" class="router-link-active" aria-label="文档"><!--[--><!--]--> 文档 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/commands.md" class="" aria-label="命令列表"><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/download.md" class="" aria-label="下载"><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/expert/intro.md" class="" aria-label="专家答疑"><!--[--><!--]--> 专家答疑 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425
|
|
|
|
* 增强脚本监听器
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">interface</span> <span class="token class-name">ScriptListener</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 脚本创建
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">output</span> 输出器
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">create</span><span class="token punctuation">(</span><span class="token class-name">Output</span> output<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 脚本销毁
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">output</span> 输出器
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">destroy</span><span class="token punctuation">(</span><span class="token class-name">Output</span> output<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 方法执行前
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">output</span> 输出器
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">advice</span> 通知点
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">before</span><span class="token punctuation">(</span><span class="token class-name">Output</span> output<span class="token punctuation">,</span> <span class="token class-name">Advice</span> advice<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 方法正常返回
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">output</span> 输出器
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">advice</span> 通知点
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">afterReturning</span><span class="token punctuation">(</span><span class="token class-name">Output</span> output<span class="token punctuation">,</span> <span class="token class-name">Advice</span> advice<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 方法异常返回
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">output</span> 输出器
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">advice</span> 通知点
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">afterThrowing</span><span class="token punctuation">(</span><span class="token class-name">Output</span> output<span class="token punctuation">,</span> <span class="token class-name">Advice</span> advice<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="参数-advice-说明" tabindex="-1"><a class="header-anchor" href="#参数-advice-说明" aria-hidden="true">#</a> 参数 <code>Advice</code> 说明</h3><p><code>Advice</code> 参数最主要是封装了通知节点的所有信息。参考<a href="/doc/advice-class.html" class="">表达式核心变量</a>中关于该节点的描述。</p><h3 id="参数-output-说明" tabindex="-1"><a class="header-anchor" href="#参数-output-说明" aria-hidden="true">#</a> 参数 <code>Output</code> 说明</h3><p><code>Output</code> 参数只拥有三个方法,主要的工作还是输出对应的文本信息</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token doc-comment comment">/**
|
|
|
|
* 输出器
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">interface</span> <span class="token class-name">Output</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 输出字符串(不换行)
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">string</span> 待输出字符串
|
|
|
|
* <span class="token keyword">@return</span> this
|
|
|
|
*/</span>
|
|
|
|
<span class="token class-name">Output</span> <span class="token function">print</span><span class="token punctuation">(</span><span class="token class-name">String</span> string<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 输出字符串(换行)
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@param</span> <span class="token parameter">string</span> 待输出字符串
|
|
|
|
* <span class="token keyword">@return</span> this
|
|
|
|
*/</span>
|
|
|
|
<span class="token class-name">Output</span> <span class="token function">println</span><span class="token punctuation">(</span><span class="token class-name">String</span> string<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token doc-comment comment">/**
|
|
|
|
* 结束当前脚本
|
|
|
|
*
|
|
|
|
* <span class="token keyword">@return</span> this
|
|
|
|
*/</span>
|
|
|
|
<span class="token class-name">Output</span> <span class="token function">finish</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="一个输出日志的-groovy-脚本示例" tabindex="-1"><a class="header-anchor" href="#一个输出日志的-groovy-脚本示例" aria-hidden="true">#</a> 一个输出日志的 groovy 脚本示例</h3><div class="language-groovy ext-groovy line-numbers-mode"><pre class="language-groovy"><code><span class="token keyword">import</span> com<span class="token punctuation">.</span>taobao<span class="token punctuation">.</span>arthas<span class="token punctuation">.</span>core<span class="token punctuation">.</span>command<span class="token punctuation">.</span>ScriptSupportCommand
|
|
|
|
<span class="token keyword">import</span> com<span class="token punctuation">.</span>taobao<span class="token punctuation">.</span>arthas<span class="token punctuation">.</span>core<span class="token punctuation">.</span>util<span class="token punctuation">.</span>Advice
|
|
|
|
|
|
|
|
<span class="token keyword">import</span> <span class="token keyword">static</span> java<span class="token punctuation">.</span>lang<span class="token punctuation">.</span>String<span class="token punctuation">.</span>format
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
* 输出方法日志
|
|
|
|
*/</span>
|
|
|
|
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Logger</span> <span class="token keyword">implements</span> <span class="token class-name">ScriptSupportCommand<span class="token punctuation">.</span>ScriptListener</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
|
|
<span class="token annotation punctuation">@Override</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">create</span><span class="token punctuation">(</span>ScriptSupportCommand<span class="token punctuation">.</span>Output output<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
output<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">"script create."</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
|
|
<span class="token annotation punctuation">@Override</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">destroy</span><span class="token punctuation">(</span>ScriptSupportCommand<span class="token punctuation">.</span>Output output<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
output<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">"script destroy."</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
|
|
<span class="token annotation punctuation">@Override</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">before</span><span class="token punctuation">(</span>ScriptSupportCommand<span class="token punctuation">.</span>Output output<span class="token punctuation">,</span> Advice advice<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
output<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">format</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">"before:class=%s;method=%s;paramslen=%d;%s;"</span></span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getClazz</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getSimpleName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getParams</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length<span class="token punctuation">,</span> advice<span class="token punctuation">.</span><span class="token function">getParams</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
|
|
<span class="token annotation punctuation">@Override</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">afterReturning</span><span class="token punctuation">(</span>ScriptSupportCommand<span class="token punctuation">.</span>Output output<span class="token punctuation">,</span> Advice advice<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
output<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">format</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">"returning:class=%s;method=%s;"</span></span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getClazz</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getSimpleName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
|
|
<span class="token annotation punctuation">@Override</span>
|
|
|
|
<span class="token keyword">void</span> <span class="token function">afterThrowing</span><span class="token punctuation">(</span>ScriptSupportCommand<span class="token punctuation">.</span>Output output<span class="token punctuation">,</span> Advice advice<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
output<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token function">format</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">"throwing:class=%s;method=%s;"</span></span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getClazz</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getSimpleName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
|
|
|
advice<span class="token punctuation">.</span><span class="token function">getMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>使用示例:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ groovy com.alibaba.sample.petstore.dal.dao.ProductDao getProductById /Users/zhuyong/middleware/arthas/scripts/Logger.groovy -S
|
|
|
|
script create.
|
|
|
|
Press Ctrl+C to abort.
|
|
|
|
Affect(class-cnt:1 , method-cnt:1) cost in 102 ms.
|
|
|
|
before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@45df64fc;
|
|
|
|
returning:class=IbatisProductDao;method=getProductById;
|
|
|
|
before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@5b0e2d00;
|
|
|
|
returning:class=IbatisProductDao;method=getProductById;
|
|
|
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--[--><!--]--></div><footer class="page-meta right-menu-padding" data-v-fdd717e0><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/alibaba/arthas/edit/master/site/docs/doc/groovy.md" rel="noopener noreferrer" target="_blank" aria-label="在 GitHub 上编辑此页"><!--[--><!--]--><span>在 GitHub 上编辑此页</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">贡献者: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: hengyunabc@gmail.com">hengyunabc</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: ian.luo@gmail.com">beiwei30</span><!----><!--]--><!--]--></span></div></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
|
|
|
|
<script type="module" src="/assets/app.977e81c1.js" defer></script>
|
|
|
|
</body>
|
|
|
|
</html>
|