mirror of
https://github.com/c-cube/nanoev.git
synced 2025-12-06 11:15:48 -05:00
57 lines
27 KiB
HTML
57 lines
27 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Trace_core (trace.Trace_core)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.0.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">Index</a> » <a href="../index.html">trace</a> » Trace_core</nav><header class="odoc-preamble"><h1>Module <code><span>Trace_core</span></code></h1><p>Trace.</p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#tracing">Tracing</a></li><li><a href="#collector">Collector</a></li><li><a href="#extensions">Extensions</a></li></ul></nav></div><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-span"><a href="#type-span" class="anchor"></a><code><span><span class="keyword">type</span> span</span><span> = int64</span></code></div><div class="spec-doc"><p>A span identifier.</p><p>The meaning of the identifier depends on the collector.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-user_data"><a href="#type-user_data" class="anchor"></a><code><span><span class="keyword">type</span> user_data</span><span> = </span><span>[ </span></code><ol><li id="type-user_data.Int" class="def variant constructor anchored"><a href="#type-user_data.Int" class="anchor"></a><code><span>| </span><span>`Int <span class="keyword">of</span> int</span></code></li><li id="type-user_data.String" class="def variant constructor anchored"><a href="#type-user_data.String" class="anchor"></a><code><span>| </span><span>`String <span class="keyword">of</span> string</span></code></li><li id="type-user_data.Bool" class="def variant constructor anchored"><a href="#type-user_data.Bool" class="anchor"></a><code><span>| </span><span>`Bool <span class="keyword">of</span> bool</span></code></li><li id="type-user_data.Float" class="def variant constructor anchored"><a href="#type-user_data.Float" class="anchor"></a><code><span>| </span><span>`Float <span class="keyword">of</span> float</span></code></li><li id="type-user_data.None" class="def variant constructor anchored"><a href="#type-user_data.None" class="anchor"></a><code><span>| </span><span>`None</span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>User defined data, generally passed as key/value pairs to whatever collector is installed (if any).</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-explicit_span"><a href="#type-explicit_span" class="anchor"></a><code><span><span class="keyword">type</span> explicit_span</span><span> = </span><span>{</span></code><ol><li id="type-explicit_span.span" class="def record field anchored"><a href="#type-explicit_span.span" class="anchor"></a><code><span>span : <a href="#type-span">span</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Identifier for this span. Several explicit spans might share the same identifier since we can differentiate between them via <code>meta</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-explicit_span.meta" class="def record field anchored"><a href="#type-explicit_span.meta" class="anchor"></a><code><span><span class="keyword">mutable</span> meta : <a href="Meta_map/index.html#type-t">Meta_map.t</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Metadata for this span (and its context). This can be used by collectors to carry collector-specific information from the beginning of the span, to the end of the span.</p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Explicit span, with collector-specific metadata</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Collector"><a href="#module-Collector" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Collector/index.html">Collector</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A global collector.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Meta_map"><a href="#module-Meta_map" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Meta_map/index.html">Meta_map</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Level"><a href="#module-Level" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Level/index.html">Level</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Tracing levels.</p></div></div><h3 id="tracing"><a href="#tracing" class="anchor"></a>Tracing</h3><div class="odoc-spec"><div class="spec value anchored" id="val-enabled"><a href="#val-enabled" class="anchor"></a><code><span><span class="keyword">val</span> enabled : <span>unit <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Is there a collector?</p><p>This is fast, so that the traced program can check it before creating any span or message.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_default_level"><a href="#val-get_default_level" class="anchor"></a><code><span><span class="keyword">val</span> get_default_level : <span>unit <span class="arrow">-></span></span> <a href="Level/index.html#type-t">Level.t</a></span></code></div><div class="spec-doc"><p>Current default level for spans.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.7</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_default_level"><a href="#val-set_default_level" class="anchor"></a><code><span><span class="keyword">val</span> set_default_level : <span><a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Set level used for spans that do not specify it. The default default value is <code>Level.Trace</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.7</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_span"><a href="#val-with_span" class="anchor"></a><code><span><span class="keyword">val</span> with_span :
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?__FUNCTION__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__FILE__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__LINE__</span>:int <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
<span><span>(<span><a href="#type-span">span</a> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span>
|
||
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>with_span ~__FILE__ ~__LINE__ name f</code> enters a new span <code>sp</code>, and calls <code>f sp</code>. <code>sp</code> might be a dummy span if no collector is installed. When <code>f sp</code> returns or raises, the span <code>sp</code> is exited.</p><p>This is the recommended way to instrument most code.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul><p><b>NOTE</b> an important restriction is that this is only supposed to work for synchronous, direct style code. Monadic concurrency, Effect-based fibers, etc. might not play well with this style of spans on some or all backends. If you use cooperative concurrency, see <code>enter_manual_span</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-enter_span"><a href="#val-enter_span" class="anchor"></a><code><span><span class="keyword">val</span> enter_span :
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?__FUNCTION__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__FILE__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__LINE__</span>:int <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
<a href="#type-span">span</a></span></code></div><div class="spec-doc"><p>Enter a span manually.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exit_span"><a href="#val-exit_span" class="anchor"></a><code><span><span class="keyword">val</span> exit_span : <span><a href="#type-span">span</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Exit a span manually. This must run on the same thread as the corresponding <a href="#val-enter_span"><code>enter_span</code></a>, and spans must nest correctly.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_data_to_span"><a href="#val-add_data_to_span" class="anchor"></a><code><span><span class="keyword">val</span> add_data_to_span : <span><a href="#type-span">span</a> <span class="arrow">-></span></span> <span><span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Add structured data to the given active span (see <a href="#val-with_span"><code>with_span</code></a>). Behavior is not specified if the span has been exited.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.4</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-enter_manual_sub_span"><a href="#val-enter_manual_sub_span" class="anchor"></a><code><span><span class="keyword">val</span> enter_manual_sub_span :
|
||
<span><span class="label">parent</span>:<a href="#type-explicit_span">explicit_span</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?flavor</span>:<span>[ `Sync <span>| `Async</span> ]</span> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?__FUNCTION__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__FILE__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__LINE__</span>:int <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
<a href="#type-explicit_span">explicit_span</a></span></code></div><div class="spec-doc"><p>Like <a href="#val-with_span"><code>with_span</code></a> but the caller is responsible for obtaining the <code>parent</code> span from their <em>own</em> caller, and carry the resulting <a href="#type-explicit_span"><code>explicit_span</code></a> to the matching <a href="#val-exit_manual_span"><code>exit_manual_span</code></a>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">flavor</span> <p>a description of the span that can be used by the <a href="Collector/module-type-S/index.html"><code>Collector.S</code></a> to decide how to represent the span. Typically, <code>`Sync</code> spans start and stop on one thread, and are nested purely by their timestamp; and <code>`Async</code> spans can overlap, migrate between threads, etc. (as happens in Lwt, Eio, Async, etc.) which impacts how the collector might represent them.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-enter_manual_toplevel_span"><a href="#val-enter_manual_toplevel_span" class="anchor"></a><code><span><span class="keyword">val</span> enter_manual_toplevel_span :
|
||
<span><span class="optlabel">?flavor</span>:<span>[ `Sync <span>| `Async</span> ]</span> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?__FUNCTION__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__FILE__</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">__LINE__</span>:int <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
<a href="#type-explicit_span">explicit_span</a></span></code></div><div class="spec-doc"><p>Like <a href="#val-with_span"><code>with_span</code></a> but the caller is responsible for carrying this <code>explicit_span</code> around until it's exited with <a href="#val-exit_manual_span"><code>exit_manual_span</code></a>. The span can be used as a parent in <a href="#val-enter_manual_sub_span"><code>enter_manual_sub_span</code></a>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">flavor</span> <p>see <a href="#val-enter_manual_sub_span"><code>enter_manual_sub_span</code></a> for more details.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exit_manual_span"><a href="#val-exit_manual_span" class="anchor"></a><code><span><span class="keyword">val</span> exit_manual_span : <span><a href="#type-explicit_span">explicit_span</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Exit an explicit span. This can be on another thread, in a fiber or lightweight thread, etc. and will be supported by backends nonetheless. The span can be obtained via <a href="#val-enter_manual_sub_span"><code>enter_manual_sub_span</code></a> or <a href="#val-enter_manual_toplevel_span"><code>enter_manual_toplevel_span</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_data_to_manual_span"><a href="#val-add_data_to_manual_span" class="anchor"></a><code><span><span class="keyword">val</span> add_data_to_manual_span :
|
||
<span><a href="#type-explicit_span">explicit_span</a> <span class="arrow">-></span></span>
|
||
<span><span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span> <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p><code>add_data_explicit esp data</code> adds <code>data</code> to the span <code>esp</code>. The behavior is not specified is the span has been exited already.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.4</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-message"><a href="#val-message" class="anchor"></a><code><span><span class="keyword">val</span> message :
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?span</span>:<a href="#type-span">span</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p><code>message msg</code> logs a message <code>msg</code> (if a collector is installed). Additional metadata can be provided.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">span</span> <p>the surrounding span, if any. This might be ignored by the collector.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-messagef"><a href="#val-messagef" class="anchor"></a><code><span><span class="keyword">val</span> messagef :
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?span</span>:<a href="#type-span">span</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span><span>(<span><span>(<span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p><code>messagef (fun k->k"hello %s %d!" "world" 42)</code> is like <code>message "hello world 42!"</code> but only computes the string formatting if a collector is installed.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_thread_name"><a href="#val-set_thread_name" class="anchor"></a><code><span><span class="keyword">val</span> set_thread_name : <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Give a name to the current thread. This might be used by the collector to display traces in a more informative way.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_process_name"><a href="#val-set_process_name" class="anchor"></a><code><span><span class="keyword">val</span> set_process_name : <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Give a name to the current process. This might be used by the collector to display traces in a more informative way.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-counter_int"><a href="#val-counter_int" class="anchor"></a><code><span><span class="keyword">val</span> counter_int :
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
<span>int <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p>Emit a counter of type <code>int</code>. Counters represent the evolution of some quantity over time.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">data</span> <p>metadata for this metric (since 0.4)</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-counter_float"><a href="#val-counter_float" class="anchor"></a><code><span><span class="keyword">val</span> counter_float :
|
||
<span><span class="optlabel">?level</span>:<a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?data</span>:<span>(<span>unit <span class="arrow">-></span></span> <span><span>(string * <a href="#type-user_data">user_data</a>)</span> list</span>)</span> <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
<span>float <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p>Emit a counter of type <code>float</code>. See <a href="#val-counter_int"><code>counter_int</code></a> for more details.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">level</span> <p>optional level for this span. since 0.7. Default is set via <a href="#val-set_default_level"><code>set_default_level</code></a>.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">data</span> <p>metadata for this metric (since 0.4)</p></li></ul></div></div><h3 id="collector"><a href="#collector" class="anchor"></a>Collector</h3><div class="odoc-spec"><div class="spec type anchored" id="type-collector"><a href="#type-collector" class="anchor"></a><code><span><span class="keyword">type</span> collector</span><span> = <span>(<span class="keyword">module</span> <a href="Collector/module-type-S/index.html">Collector.S</a>)</span></span></code></div><div class="spec-doc"><p>An event collector.</p><p>See <a href="Collector/index.html"><code>Collector</code></a> for more details.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-setup_collector"><a href="#val-setup_collector" class="anchor"></a><code><span><span class="keyword">val</span> setup_collector : <span><a href="#type-collector">collector</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>setup_collector c</code> installs <code>c</code> as the current collector.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if there already is an established collector.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_current_level"><a href="#val-get_current_level" class="anchor"></a><code><span><span class="keyword">val</span> get_current_level : <span>unit <span class="arrow">-></span></span> <a href="Level/index.html#type-t">Level.t</a></span></code></div><div class="spec-doc"><p>Get current level. This is only meaningful if a collector was set up with <a href="#val-setup_collector"><code>setup_collector</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.7</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_current_level"><a href="#val-set_current_level" class="anchor"></a><code><span><span class="keyword">val</span> set_current_level : <span><a href="Level/index.html#type-t">Level.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Set the current level of tracing. This only has a visible effect if a collector was installed with <a href="#val-setup_collector"><code>setup_collector</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.7</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-shutdown"><a href="#val-shutdown" class="anchor"></a><code><span><span class="keyword">val</span> shutdown : <span>unit <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>shutdown ()</code> shutdowns the current collector, if one was installed, and waits for it to terminate before returning.</p></div></div><h3 id="extensions"><a href="#extensions" class="anchor"></a>Extensions</h3><div class="odoc-spec"><div class="spec type anchored" id="type-extension_event"><a href="#type-extension_event" class="anchor"></a><code><span><span class="keyword">type</span> extension_event</span><span> = </span><span>..</span></code></div><div class="spec-doc"><p>Extension event</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.8</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension_event"><a href="#val-extension_event" class="anchor"></a><code><span><span class="keyword">val</span> extension_event : <span><a href="#type-extension_event">extension_event</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Trigger an extension event, whose meaning depends on the library that defines it. Some collectors will simply ignore it. This does nothing if no collector is setup.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.8</li></ul></div></div></div></body></html>
|