tracing-viewer is a beautiful trace explorer with filtering capabilities. To be used along with Rust's tracing-subscriber.
2025-10-09.13-07-33.1.mp4
tracing-viewer currently expects a list of JSON objects as input. Luckily, tracing-subscriber comes with built-in JSON support. In my PS1 emulator I set it up like this:
let fmt_layer = tracing_subscriber::fmt::layer()
.without_time()
.json() // <-- enable JSON!
.with_filter(targets);
tracing_subscriber::registry().with(fmt_layer).init();The project also requires a MongoDB running with admin:admin as default login. You can spin up a temporary database using Docker (note: the --rm will remove the container once the database shuts down!):
docker run --rm -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin mongoThe ingestor will take care of everything else like creating the unique key cache, collections and indexes.
# frontend
cd ./frontend && npm run build
# ingestor
cd ./ingestor && cargo build --releaseBasically just pass the file as argument to the ingestor:
# ingest data into database
./ingestor ./path/to/trace.dump
# run the frontend
npm start