<html><head><metahttp-equiv="content-type"content="text/html; charset=utf-8"/><title>5 Management and Monitoring</title><linkrel="stylesheet"type="text/css"href="scribble.css"title="default"/><linkrel="stylesheet"type="text/css"href="racket.css"title="default"/><linkrel="stylesheet"type="text/css"href="scribble-style.css"title="default"/><scripttype="text/javascript"src="scribble-common.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><bodyid="scribble-racket-lang-org"><divclass="tocset"><divclass="tocview"><divclass="tocviewlist"style="margin-bottom: 1em;"><divclass="tocviewtitle"><tablecellspacing="0"cellpadding="0"><tr><tdstyle="width: 1em;"><ahref="javascript:void(0);"title="Expand/Collapse"class="tocviewtoggle"onclick="TocviewToggle(this,"tocview_0");">▼</a></td><td></td><td><ahref="index.html"class="tocviewlink"data-pltdoc="x">Marketplace:<spanclass="mywbr"> </span> Network-<wbr></wbr>Aware Programming</a></td></tr></table></div><divclass="tocviewsublisttop"style="display: block;"id="tocview_0"><tablecellspacing="0"cellpadding="0"><tr><tdalign="right">1 </td><td><ahref="Concepts.html"class="tocviewlink"data-pltdoc="x">Concepts</a></td></tr><tr><tdalign="right">2 </td><td><ahref="high-level-interface.html"class="tocviewlink"data-pltdoc="x">High-<wbr></wbr>level interface</a></td></tr><tr><tdalign="right">3 </td><td><ahref="low-level-interface.html"class="tocviewlink"data-pltdoc="x">Low-<wbr></wbr>level interface</a></td></tr><tr><tdalign="right">4 </td><td><ahref="Drivers.html"class="tocviewlink"data-pltdoc="x">Drivers</a></td></tr><tr><tdalign="right">5 </td><td><ahref=""class="tocviewselflink"data-pltdoc="x">Management and Monitoring</a></td></tr><tr><tdalign="right">6 </td><td><ahref="Examples.html"class="tocviewlink"data-pltdoc="x">Examples</a></td></tr></table></div></div><divclass="tocviewlist"><tablecellspacing="0"cellpadding="0"><tr><tdstyle="width: 1em;"><ahref="javascript:void(0);"title="Expand/Collapse"class="tocviewtoggle"onclick="TocviewToggle(this,"tocview_1");">►</a></td><td>5 </td><td><ahref=""class="tocviewselflink"data-pltdoc="x">Management and Monitoring</a></td></tr></table><divclass="tocviewsublistbottom"style="display: none;"id="tocview_1"><tablecellspacing="0"cellpadding="0"><tr><tdalign="right">5.1 </td><td><ahref="#%28part._generic-spy%29"class="tocviewlink"data-pltdoc="x">generic-<wbr></wbr>spy</a></td></tr><tr><tdalign="right">5.2 </td><td><ahref="#%28part._logging%29"class="tocviewlink"data-pltdoc="x">logging (MATRIX_<spanclass="mywbr"> </span>LOG)</a></td></tr><tr><tdalign="right">5.3 </td><td><ahref="#%28part._debugger__experimental_%29"class="tocviewlink"data-pltdoc="x">debugger (experimental)</a></td></tr></table></div></div></div><divclass="tocsub"><divclass="tocsubtitle">On this page:</div><tableclass="tocsublist"cellspacing="0"><tr><td><spanclass="tocsublinknumber">5.1<tt> </tt></span><ahref="#%28part._generic-spy%29"class="tocsubseclink"data-pltdoc="x">generic-<wbr></wbr>spy</a></td></tr><tr><td><ahref="#%28def._%28%28lib._marketplace%2Fsupport%2Fspy..rkt%29._generic-spy%29%29"class="tocsubnonseclink"data-pltdoc="x"><spantitle="Provided from: marketplace/support/spy"><spanclass="RktSym"><spanclass="RktValLink">generic-<wbr></wbr>spy</span></span></span></a></td></tr><tr><td><spanclass="tocsublinknumber">5.2<tt> </tt></span><ahref="#%28part._logging%29"class="tocsubseclink"data-pltdoc="x">logging (MATRIX_<spanclass="mywbr"> </span>LOG)</a></td></tr><tr><td><ahref="#%28form._%28%28lib._marketplace%2Flog-untyped..rkt%29._.M.A.T.R.I.X_.L.O.G%29%29"class="tocsubnonseclink"data-pltdoc="x"><spantitle="Provided from: marketplace/log-untyped, marketplace/log-typed"><spanclass="RktSym">MATRIX_<spanclass="mywbr"> </span>LOG</span></span></a></td></tr><tr><td><ahref="#%28form._%28%28lib._marketp
with a <spanclass="RktPn">#:subscriber</span><spanclass="RktSym"><ahref="high-level-interface.html#%28form._%28%28lib._marketplace%2Fsugar-untyped..rkt%29._endpoint%29%29"class="RktStxLink"data-pltdoc="x">endpoint</a></span> listening for every
message. Each <spanclass="RktSym"><ahref="low-level-interface.html#%28def._%28%28lib._marketplace%2Fmain..rkt%29._.Endpoint.Event%29%29"class="RktValLink"data-pltdoc="x">EndpointEvent</a></span> received by the endpoint is
trace of activity within a VM: <spanclass="RktSym"><ahref="low-level-interface.html#%28def._%28%28lib._marketplace%2Fmain..rkt%29._presence-event%29%29"class="RktValLink"data-pltdoc="x">presence-event</a></span>s and
<spanclass="RktSym"><ahref="low-level-interface.html#%28def._%28%28lib._marketplace%2Fmain..rkt%29._absence-event%29%29"class="RktValLink"data-pltdoc="x">absence-event</a></span>s (of <spanclass="RktPn">#:publishers</span>) are logged, as is
each <spanclass="RktVal">'</span><spanclass="RktVal">publisher</span> message sent to the VM’s network.</div></p></div></p><h4>5.2<tt> </tt><aname="(part._logging)"></a><aname="(mod-path._marketplace/log-untyped)"></a><aname="(mod-path._marketplace/log-typed)"></a>logging (MATRIX_LOG)</h4><p><divclass="SIntrapara"><tablecellspacing="0"class="defmodule"><tr><td><spanclass="hspace"> </span><spanclass="RktPn">(</span><spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29"class="RktStxLink"data-pltdoc="x">require</a></span><spanclass="stt"></span><ahref="#%28mod-path._marketplace%2Flog-untyped%29"class="RktModLink"data-pltdoc="x"><spanclass="RktSym">marketplace/log-untyped</span></a><spanclass="RktPn">)</span></td></tr><tr><td><spanclass="hspace"> </span><spanclass="RktPn">(</span><spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29"class="RktStxLink"data-pltdoc="x">require</a></span><spanclass="stt"></span><ahref="#%28mod-path._marketplace%2Flog-typed%29"class="RktModLink"data-pltdoc="x"><spanclass="RktSym">marketplace/log-typed</span></a><spanclass="RktPn">)</span></td></tr></table></div><divclass="SIntrapara"><p><divclass="SIntrapara"><blockquoteclass="SVInsetFlow"><tablecellspacing="0"class="boxed RBoxed"><tr><td><blockquoteclass="SubFlow"><divclass="RBackgroundLabel SIEHidden"><divclass="RBackgroundLabelInner"><p>environment variable</p></div></div><pclass="RForeground"><aname="(form._((lib._marketplace/log-untyped..rkt)._.M.A.T.R.I.X_.L.O.G))"></a><spantitle="Provided from: marketplace/log-untyped, marketplace/log-typed"><spanclass="RktSym">MATRIX_LOG</span></span></p></blockquote></td></tr></table></blockquote></div><divclass="SIntrapara">Set the <spanclass="stt">MATRIX_LOG</span> environment variable to "debug", "info",
"warning", "error" or "fatal" (i.e. any of Racket’s
<spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/logging.html#%28def._%28%28quote._~23~25kernel%29._log-level~3f%29%29"class="RktValLink"data-pltdoc="x">log-level?</a></span>s) to enable output of log messages at that level
and higher.</div></p></div><divclass="SIntrapara">If <spanclass="stt">MATRIX_LOG</span> is not defined in the environment, <spanstyle="font-style: italic">no log
output will be produced</span>.</div><divclass="SIntrapara"><p><divclass="SIntrapara"><blockquoteclass="SVInsetFlow"><tablecellspacing="0"class="boxed RBoxed"><tr><td><blockquoteclass="SubFlow"><divclass="RBackgroundLabel SIEHidden"><divclass="RBackgroundLabelInner"><p>syntax</p></div></div><pclass="RForeground"><spanclass="RktPn">(</span><aname="(form._((lib._marketplace/log-untyped..rkt)._matrix-log))"></a><spantitle="Provided from: marketplace/log-untyped, marketplace/log-typed"><spanclass="RktSym"><ahref="#%28form._%28%28lib._marketplace%2Flog-untyped..rkt%29._matrix-log%29%29"class="RktStxLink"data-pltdoc="x">matrix-log</a></span></span><spanclass="hspace"> </span><spanclass="RktVar">level</span><spanclass="hspace"> </span><spanclass="RktVar">format-str</span><spanclass="hspace"> </span><spanclass="RktVar">arg</span><spanclass="hspace"> </span><spanclass="RktMeta">...</span><spanclass="RktPn">)</span></p></blockquote></td></tr><tr><td><spanclass="stt"> </span></td></tr><tr><td><tablecellspacing="0"class="specgrammar"><tr><tdalign="right"valign="baseline"><spanclass="RktVar">level</span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="center"valign="baseline">=</td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="RktVar">expr</span></td></tr><tr><tdalign="right"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="center"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td></tr><tr><tdalign="right"valign="baseline"><spanclass="RktVar">format-str</span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="center"valign="baseline">=</td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="RktVar">expr</span></td></tr><tr><tdalign="right"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="center"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td></tr><tr><tdalign="right"valign="baseline"><spanclass="RktVar">arg</span></td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="center"valign="baseline">=</td><tdalign="left"valign="baseline"><spanclass="stt"> </span></td><tdalign="left"valign="baseline"><spanclass="RktVar">expr</span></td></tr></table></td></tr></table></blockquote></div><divclass="SIntrapara">Analogous to Racket’s core <spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/logging.html#%28def._%28%28quote._~23~25kernel%29._log-message%29%29"class="RktValLink"data-pltdoc="x">log-message</a></span>, but uses
<spanclass="RktSym"><ahref="#%28def._%28%28lib._marketplace%2Flog-untyped..rkt%29._matrix-root-logger%29%29"class="RktValLink"data-pltdoc="x">matrix-root-logger</a></span> instead of the system logger. The
<spanclass="RktVar">level</span> expression must evaluate to a level symbol (see
<spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/logging.html#%28def._%28%28quote._~23~25kernel%29._log-level~3f%29%29"class="RktValLink"data-pltdoc="x">log-level?</a></span>), and <spanclass="RktVar">format-str</span> must evaluate to a
format string for use with <spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/Writing.html#%28def._%28%28quote._~23~25kernel%29._format%29%29"class="RktValLink"data-pltdoc="x">format</a></span>.</div></p></div><divclass="SIntrapara"><p><divclass="SIntrapara"><blockquoteclass="SVInsetFlow"><tablecellspacing="0"class="boxed RBoxed"><tr><td><blockquoteclass="SubFlow"><divclass="RBackgroundLabel SIEHidden"><divclass="RBackgroundLabelInner"><p>value</p></div></div><pclass="RForeground"><aname="(def._((lib._marketplace/log-untyped..rkt)._matrix-root-logger))"></a><spantitle="Provided from: marketplace/log-untyped, marketplace/log-typed"><spanclass="RktSym"><ahref="#%28def._%28%28lib._marketplace%2Flog-untyped..rkt%29._matrix-root-logger%29%29"class="RktValLink"data-pltdoc="x">matrix-root-logger</a></span></span><spanclass="hspace"> </span>:<spanclass="hspace"> </span><spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/logging.html#%28def._%28%28quote._~23~25kernel%29._logger~3f%29%29"class="RktValLink"data-pltdoc="x">logger?</a></span></p></blockquote></td></tr></table></blockquote></div><divclass="SIntrapara">The root logger for marketplace logging.</div></p></div></p><h4>5.3<tt> </tt><aname="(part._debugger__experimental_)"></a><aname="(mod-path._marketplace/support/debug)"></a>debugger (experimental)</h4><p><divclass="SIntrapara"><tablecellspacing="0"class="defmodule"><tr><td><spanclass="hspace"> </span><spanclass="RktPn">(</span><spanclass="RktSym"><ahref="http://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29"class="RktStxLink"data-pltdoc="x">require</a></span><spanclass="stt"></span><ahref="#%28mod-path._marketplace%2Fsupport%2Fdebug%29"class="RktModLink"data-pltdoc="x"><spanclass="RktSym">marketplace/support/debug</span></a><spanclass="RktPn">)</span></td></tr></table></div><divclass="SIntrapara"><p><divclass="SIntrapara"><blockquoteclass="SVInsetFlow"><tablecellspacing="0"class="boxed RBoxed"><tr><td><blockquoteclass="SubFlow"><divclass="RBackgroundLabel SIEHidden"><divclass="RBackgroundLabelInner"><p>procedure</p></div></div><pclass="RForeground"><spanclass="RktPn">(</span><aname="(def._((lib._marketplace/support/debug..rkt)._debug))"></a><spantitle="Provided from: marketplace/support/debug"><spanclass="RktSym"><ahref="#%28def._%28%28lib._marketplace%2Fsupport%2Fdebug..rkt%29._debug%29%29"class="RktValLink"data-pltdoc="x">debug</a></span></span><spanclass="hspace"> </span><spanclass="RktVar">p</span><spanclass="RktPn">)</span><spanclass="hspace"> </span>→<spanclass="hspace"> </span><spanclass="RktSym"><ahref="low-level-interface.html#%28def._%28%28lib._marketplace%2Fmain..rkt%29._.Spawn%29%29"class="RktValLink"data-pltdoc="x">Spawn</a></span></p></blockquote></td></tr><tr><td><spanclass="hspace"> </span><spanclass="RktVar">p</span><spanclass="hspace"> </span>:<spanclass="hspace"> </span><spanclass="RktSym"><ahref="low-level-interface.html#%28def._%28%28lib._marketplace%2Fmain..rkt%29._.Spawn%29%29"class="RktValLink"data-pltdoc="x">Spawn</a></span></td></tr></table></blockquote></div><divclass="SIntrapara">Translates a <spanclass="RktSym"><ahref="high-level-interface.html#%28form._%28%28lib._marketplace%2Fsugar-untyped..rkt%29._spawn%29%29"class="RktStxLink"data-pltdoc="x">spawn</a></span> action to another spawn action which wraps
use of <spanclass="RktSym"><ahref="#%28def._%28%28lib._marketplace%2Fsupport%2Fdebug..rkt%29._debug%29%29"class="RktValLink"data-pltdoc="x">debug</a></span>.</div></p><divclass="navsetbottom"><spanclass="navleft"> </span><spanclass="navright"> <ahref="Drivers.html"title="backward to "4 Drivers""data-pltdoc="x">← prev</a> <ahref="index.html"title="up to "Marketplace: Network-Aware Programming""data-pltdoc="x">up</a> <ahref="Examples.html"title="forward to "6 Examples""data-pltdoc="x">next →</a></span> </div></div></div><divid="contextindicator"> </div></body></html>