You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/development/debugging.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Controlling Log Level
4
4
5
-
For a full reference on log-level controls — including which pods are affected, YAML snippets for every component, and `RUST_LOG`for Rust data-plane pods — see [Log Levels](../user-guide/reference/configuration/log-levels.md).
5
+
For a full reference on log-level controls — including which pods are affected, YAML snippets for every component, and advanced `RUST_LOG`filtering for data-plane pods — see [Log Levels](../user-guide/reference/configuration/log-levels.md).
Copy file name to clipboardExpand all lines: docs/user-guide/reference/configuration/environment-variables.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@
4
4
5
5
Numaflow exposes three env vars for controlling log verbosity across its pods:
6
6
7
-
-`NUMAFLOW_LOG_LEVEL` — sets the log level for all **Go** components (daemon, controller, webhook, UX server, ISB service jobs). Accepts any [zapcore level](https://pkg.go.dev/go.uber.org/zap/zapcore#Level) (`debug`, `info`, `warn`, `error`, etc.). Overrides the level implied by `NUMAFLOW_DEBUG`. Invalid values are silently ignored.
8
-
-`RUST_LOG` — sets the log level for all **Rust**data-plane pods (vertex `numa` container, MonoVertex `numa` container, serving pods). Accepts standard [`tracing-subscriber` EnvFilter syntax](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html) (e.g. `warn`, `numaflow_core=debug,info`).
9
-
-`NUMAFLOW_DEBUG` — development shortcut honored by both runtimes; sets level to `debug` and switches log output from JSON to human-readable text. **Note:** the format change may break log shippers expecting JSON — prefer `NUMAFLOW_LOG_LEVEL` or `RUST_LOG` when only the level needs changing.
7
+
-`NUMAFLOW_LOG_LEVEL` — sets the log level (`debug`, `info`, `warn`, `error`) for Numaflow-owned components. Overrides the level implied by `NUMAFLOW_DEBUG`.
8
+
-`RUST_LOG` — advanced override for data-plane pods (vertex `numa` container, MonoVertex `numa` container, serving pods). Accepts standard [`tracing-subscriber` EnvFilter syntax](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html) (e.g. `warn`, `numaflow_core=debug,info`) and takes precedence over `NUMAFLOW_LOG_LEVEL`.
9
+
-`NUMAFLOW_DEBUG` — development shortcut; sets level to `debug` and may switch log output from JSON to human-readable text. **Note:** the format change may break log shippers expecting JSON — prefer `NUMAFLOW_LOG_LEVEL` when only the level needs changing.
10
10
11
11
See [Log Levels](log-levels.md) for a full pod inventory, per-component YAML examples, and common recipes.
Copy file name to clipboardExpand all lines: docs/user-guide/reference/configuration/log-levels.md
+44-45Lines changed: 44 additions & 45 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,36 +1,36 @@
1
1
# Log Levels
2
2
3
-
Numaflow pods use two separate logging systems depending on whether they run Go or Rust code. This page explains how to control the log level for each.
3
+
Numaflow-owned pods use `NUMAFLOW_LOG_LEVEL` as the standard log-level control. Data-plane pods also support `RUST_LOG`for advanced filtering.
4
4
5
5
## Quick reference
6
6
7
-
| Pod / container |Runtime | Log-level env var | Default level |
`NUMAFLOW_DEBUG=true` is also supported as a development shortcut (see [below](#numaflow_debug-interaction)).
22
22
23
23
---
24
24
25
-
## Go components — `NUMAFLOW_LOG_LEVEL`
25
+
## Standard log levels — `NUMAFLOW_LOG_LEVEL`
26
26
27
-
All Go binaries (daemon, controller, webhook, UX server, ISB service jobs) use the shared `NewLogger()` helper, which reads`NUMAFLOW_LOG_LEVEL` at startup.
27
+
Numaflow-owned components read`NUMAFLOW_LOG_LEVEL` at startup.
28
28
29
-
**Accepted values:**any level recognized by [go.uber.org/zap/zapcore](https://pkg.go.dev/go.uber.org/zap/zapcore#Level): `debug`, `info`, `warn`, `error`, `dpanic`, `panic`, `fatal`. In practice `debug`, `info`, `warn`, and `error` are the useful operational values.
**Precedence:**`NUMAFLOW_LOG_LEVEL` overrides the level implied by `NUMAFLOW_DEBUG`. Invalid values are silently ignored and the default level is used instead.
33
+
**Precedence:**`NUMAFLOW_LOG_LEVEL` overrides the level implied by `NUMAFLOW_DEBUG`. Invalid values fall back to the level selected by `NUMAFLOW_DEBUG` or the default. For data-plane pods, `RUST_LOG` takes precedence over `NUMAFLOW_LOG_LEVEL` when set.
34
34
35
35
### Pipeline daemon pod
36
36
@@ -88,11 +88,11 @@ spec:
88
88
89
89
---
90
90
91
-
## Rust components — `RUST_LOG`
91
+
## Pipeline, MonoVertex, and Serving pods
92
92
93
-
Pipeline vertex pods, MonoVertex pods, and Serving pods run the Numaflow Rust data-plane binary. These use the [`tracing-subscriber`](https://docs.rs/tracing-subscriber) `EnvFilter`, which reads `RUST_LOG` at startup.
93
+
Pipeline vertex pods, MonoVertex pods, and Serving pods use `NUMAFLOW_LOG_LEVEL` for common log-level cases:
94
94
95
-
**Accepted values:** standard `EnvFilter` syntax — simple level names (`debug`, `info`, `warn`, `error`) or per-crate directives (`numaflow_core=debug,h2=warn,info`).
Data-plane pods also support standard [`tracing-subscriber` EnvFilter syntax](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html) via `RUST_LOG`. Use this only when you need fine-grained filtering. When `RUST_LOG` is set, it takes precedence over `NUMAFLOW_LOG_LEVEL`.
141
+
142
+
For example, to enable debug logs for a specific target only:
143
+
144
+
```yaml
145
+
# Pipeline.spec.vertices[].containerTemplate.env
146
+
- name: RUST_LOG
147
+
value: "numaflow_core=debug,info"
148
+
```
149
+
145
150
---
146
151
147
152
## `NUMAFLOW_DEBUG` interaction
148
153
149
-
`NUMAFLOW_DEBUG=true` is a development shortcut. Its effects differ by runtime:
150
-
151
-
| Effect | Go | Rust |
152
-
|---|---|---|
153
-
| Log level | Lowered to `debug` | Lowered to `debug` (plus `h2::codec=info`) |
154
-
| Log format | Switches from JSON to console (human-readable) | Switches from JSON to human-readable text |
155
-
| Stacktraces | Added at `warn`+ (vs `error`+ by default) | n/a |
154
+
`NUMAFLOW_DEBUG=true`is a development shortcut. It lowers the default log level to `debug` and may switch log output from structured JSON to human-readable text.
156
155
157
-
**Important:** switching from JSON to text format on the Rust side (`NUMAFLOW_DEBUG=true`) may break log shippers or aggregators that expect structured JSON. Prefer `RUST_LOG=debug` to lower the level without changing the output format.
156
+
**Important:** switching from JSON to text format may break log shippers or aggregators that expect structured JSON. Prefer `NUMAFLOW_LOG_LEVEL=debug` to lower the level without changing the output format.
158
157
159
-
`NUMAFLOW_LOG_LEVEL`overrides the level for Go components regardless of `NUMAFLOW_DEBUG`. There is no equivalent override on the Rust side — use `RUST_LOG` instead.
158
+
`NUMAFLOW_LOG_LEVEL`overrides the level implied by `NUMAFLOW_DEBUG` without changing the format selected by `NUMAFLOW_DEBUG`. For data-plane pods, `RUST_LOG` takes precedence over `NUMAFLOW_LOG_LEVEL` when set.
160
159
161
160
---
162
161
@@ -169,18 +168,18 @@ spec:
169
168
value: warn
170
169
```
171
170
172
-
**Enable debug for a single Rust crate without flooding all logs:**
171
+
**Enable debug for a single data-plane target without flooding all logs:**
173
172
```yaml
174
173
# Pipeline.spec.vertices[].containerTemplate.env
175
174
- name: RUST_LOG
176
175
value: "numaflow_core=debug,info"
177
176
```
178
177
179
-
**Enable full debug on a vertex pod (both Go sidecar and Rust data-plane):**
178
+
**Enable full debug on a vertex pod:**
180
179
```yaml
181
180
# Pipeline.spec.vertices[].containerTemplate.env
182
181
- name: NUMAFLOW_DEBUG
183
182
value: "true"
184
183
# Note: this also switches log output from JSON to text.
185
-
# To keep JSON format while lowering the Rust level, use RUST_LOG=debug instead.
184
+
# To keep JSON format while lowering the level, use NUMAFLOW_LOG_LEVEL=debug instead.
0 commit comments