---
title: Logging Controls
order: 600
---

## Controlling logging globally

Rerun logging is enabled by default. The logging behavior can be overridden at runtime using the `RERUN` environment variable:

```sh
export RERUN=off
python my_rerun_enabled_script.py
# or
cargo run my_rerun_package

# No log messages will be transmitted.
```

The `RERUN` environment variable is read once during SDK initialization. The accepted values for `RERUN` are `1/on/true`, and `0/off/false`.

> [!NOTE]
> When Rerun is disabled, logging statements are bypassed and essentially become no-ops.

## Creating a default-off setup in code

The "default-on" behavior can also be changed to a "default-off" behavior:

snippet: tutorials/default-off-session

## Dynamically turn logging on/off

In order to dynamically turn off logging at runtime, you can swap out the active recording with a disabled recording.
When you want to turn logging back on, you simply continue to use the previous recording again.

### Rust

In Rust you always pass the recording explicitly, making this fully transparent.
In order to create a no-op recording call `RecordingStream::disabled()`.

```rust
let noop_rec = RecordingStream::disabled();
```

### Python

The Python API uses the global recording stream by default.
To swap it out with a no-op recording call `set_global_data_recording` with `None`.

```python
# Disabling logging
prev_rec = rr.set_global_data_recording(None)

# …

# Re-enabling logging
rr.set_global_data_recording(prev_rec)
```
