---
title: "Listeners"
canonical: "https://rmanwiki-25.pixar.com/space/REN25/20416468/Listeners"
format: markdown
---
The data coming out of the stats system can be translated and presented in any number of ways, depending on the analysis needs. This presentation happens through C++ plugins called Listeners. The Listener plugin framework is designed for extensibility such that users can customize their stats analysis as needed. RenderMan also includes a few listeners for general-purpose functionality.

### Built-in Listeners

Below is the list of built-in Listeners provided with the new system.

[JSON Report](https://renderman.atlassian.net/wiki/spaces/REN25/pages/20418742) is a configurable report that writes diagnostic data to a hierarchical JSON document at render exit and on checkpoint exits.

[Print Listener](https://renderman.atlassian.net/wiki/spaces/REN25/pages/20416508) is a "Hello World" example Listener that prints raw data to the console.

[Snapshot Listener](https://renderman.atlassian.net/wiki/spaces/REN25/pages/20416514) prints a snapshot of stats on demand or at the end of a render. The "snapshot" is a diagnostic summary plus a configurable set of additional metrics.

[Telemetry Listener](https://renderman.atlassian.net/wiki/spaces/REN25/pages/20416496) produces formatted output for testing, debugging, or benchmarks. It can stream JSON-formatted data to the console during a render or write a final-report CSV file.

| Listener Type | Description | Use | Notes |
| --- | --- | --- | --- |
| `jsonreport` | Write hierarchical metric data to a JSON file. | An end-of-render JSON report, including checkpoint/resume support. | The default is currently to write all checkpoints but this can be disabled in the listener configuration. See [JSON Report Listener](https://wiki.pixar.com/display/RND/JSON+Report+Listener) reference |
| `print` | Write metric data to std::out. | Writes raw output to the console. | The "Hello World" of example listeners. |
| `snapshot` | Write a summary of render stats to the console. | An end-of-render summary that is comparable with the legacy stats summary, plus optional extra metric data. The summary is also available mid-render by specifying "trigger" events. | For RIB or Preview renders only. The snapshot data is not output on Live/IPR renders cancellation. |
| `telemetry` | Stream of data to console and/or write a report to CSV | Benchmarks or debugging | Can be an end-of-render CSV report written to disk, or can be a live stream of metrics to the console as the render progresses. |

#### Live Data

Live streaming is enabled at the Session level, which then allows any supporting client to attach.

### Live Statistics

The diagnostics system includes a WebSocket server. The WebSocket server is responsible for the live data streaming to the DCC clients and for serving the live data to a client that is built into the [it image tool](https://renderman.atlassian.net/wiki/spaces/REN25/pages/20415618). Each of these is configured with an internal BufferedListener, which handles the data stream management for the server.