Barebones C++ implementation of X-Trace compatible with latest brown tracing framework + baggage version
# Building
```
mkdir build
cd build
cmake ..
make
sudo make install
```
# Creating Traces
To start an X-Trace Trace:
```
#include "xtrace.h"
XTrace::StartTrace();
```
To log something with X-Trace:
```
#include "xtrace.h"
XTRACE("hello world! I am an X-Trace event");
```
Or alternatively
```
XTrace::log("hello world! I am an X-Trace event");
```
# X-Trace reports server
This implementation sends reports to the `xtrace-server` hostname, on the default X-Trace port of 5563. These are specified in `pubsub.h`.
TODO: instructions on running report server
# Context Propagation
X-Trace uses thread-local storage to automatically link events together in the same thread. If you want to log things from a new thread, you have to manually pass this context to a new thread.
The file `main.cc` gives some simple examples of X-Trace usage and context propagation
# Read more
Our paper on Eurosys gives more on baggage: [Universal Context Propagation for Distributed System Instrumentation](https://people.mpi-sws.org/~jcmace/papers/mace2018universal.pdf) Jonathan Mace and Rodrigo Fonseca, Eurosys 2018