update readme

This commit is contained in:
Simon Cruanes 2023-07-18 15:58:50 -04:00
parent c8f88f44ea
commit 69f8447c9a
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 61 additions and 0 deletions

View file

@ -13,6 +13,67 @@ a library or application, either by hand or via a ppx.
- [x] counters - [x] counters
- [ ] other metrics? - [ ] other metrics?
### Usage
To instrument your code, you can simply add `trace` to your dune/opam files, and then
write code like such:
```ocaml
let f x =
Trace.with_span ~__FILE__ ~__LINE__ "inside-f" @@ fun _sp ->
(* … code for f *)
let g x =
Trace.with_span ~__FILE__ ~__LINE__ "inside-g" @@ fun _sp ->
let y = f x in
(* … code for f *)
let () =
Some_trace_backend.setup () @@ fun () ->
let result = g 42 in
print_result result
```
The file `test/t1.ml` follows this pattern, using `trace-tef` as a simple backend
that emits one JSON object per span/message:
```ocaml
let run () =
Trace.set_process_name "main";
Trace.set_thread_name "t1";
let n = ref 0 in
for _i = 1 to 50 do
Trace.with_span ~__FILE__ ~__LINE__ "outer.loop" @@ fun _sp ->
for _j = 2 to 5 do
incr n;
Trace.with_span ~__FILE__ ~__LINE__ "inner.loop" @@ fun _sp ->
Trace.messagef (fun k -> k "hello %d %d" _i _j);
Trace.message "world";
Trace.counter_int "n" !n
done
done
let () =
Trace_tef.with_setup ~out:(`File "trace.json") () @@ fun () ->
run ()
```
After running this, the file "trace.json" will contain something like:
```json
[{"pid":2,"name":"process_name","ph":"M","args": {"name":"main"}},
{"pid":2,"tid": 3,"name":"thread_name","ph":"M","args": {"name":"t1"}},
{"pid":2,"cat":"","tid": 3,"ts": 2.00,"name":"hello 1 2","ph":"I"},
{"pid":2,"cat":"","tid": 3,"ts": 3.00,"name":"world","ph":"I"},
{"pid":2,"tid":3,"ts":4.00,"name":"c","ph":"C","args": {"n":1}},
```
Opening it in https://ui.perfetto.dev we get something like this:
![screenshot of perfetto UI](media/ui.png)
### Backends ### Backends
Concrete tracing or observability formats such as: Concrete tracing or observability formats such as:

BIN
media/ui.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB