h4 : Execution Logger (v1.0.0) - Console Mirror
The Execution Logger
- model_in
- clip_in
- clip_vision_in
- vae_in
- conditioning_in
- conditioning_positive_in
- conditioning_negative_in
- latent_in
- image_in
- mask_in
- log_summary
Sometimes you don't need a debugger's full teardown - you need a receipt. The Execution Logger is the h4 ToolKit's "console mirror": it accepts any of the common payloads, prints a type-and-shape summary for each connected wire to the ComfyUI log stream, and hands you back a single plain-text summary you can feed to a note node, a file, or a webhook. It's the lightweight sibling of the Debug-a-Tron family: no GO PLUS ULTRA, no HTML, no artifacts on disk. Just lines in the log and one useful string out.
How it works
Two required widgets:
log_level-INFO,DEBUG, orWARNING, choosing the severity of the emitted log lines.prefix- a tag prepended to every message; defaults to[EXEC].
Then a show_types / show_shapes pair that decide whether the console lines carry Python types and tensor shapes/conditioning lengths. Both default on, and honestly that's where the value is - at a glance you can confirm two branches agree on tensor shape before they hit a merge node.
The optional sockets take the standard menu: model_in, clip_in, clip_vision_in, vae_in, conditioning_in, conditioning_positive_in, conditioning_negative_in, latent_in, image_in, mask_in. Unconnected slots produce nothing - no filler. The single output, log_summary, is a markdown-friendly string recapping execution count and key metrics (tensor min/max, conditioning lengths, scalar values).
Where it fits
The README suggests pairing it with the Console node - HTML for stakeholder reporting, Execution Logger for keeping the CLI loud while you iterate - and that division holds up. The other strong use is tailing a complex graph and feeding log_summary into a note-taking or webhook node to maintain a run ledger. If you've ever wanted "a permanent record of what actually ran" without artifacts piling up in temp directories, this is that.
It's a thin node in a thin, shelved pack (zero search impressions, no community footprint), so don't expect fireworks - but it's also close to zero maintenance, which counts for a lot.
Install
ComfyUI Manager → search "h4 ToolKit", or:
cd ComfyUI/custom_nodes
git clone https://github.com/m3rr/h4_ToolKit
Restart. Only colorama and numpy as dependencies, auto-installed on startup; no models to download.
Notes
- Leave slots unconnected - no noise is generated, so it's safe to leave a Logger permanently wired into a workflow.
- If you want log lines to stand out, change
log_leveltoWARNINGso they clear the info chatter, or set a distinctiveprefixlike[MY_RUN]. - The log output lives in the ComfyUI console;
log_summaryis the string you route elsewhere.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| log_level | COMBO | INFO | Select the console severity used for emitted messages. |
| prefix | STRING | [EXEC] | Human-readable tag prepended to every log entry. |
| model_inopt | MODEL | Connect any diffusion model blob to inspect or forward downstream. | |
| clip_inopt | CLIP | Attach a CLIP text encoder payload for logging and pass-through. | |
| clip_vision_inopt | CLIP_VISION | Optional CLIP vision encoder payload. | |
| vae_inopt | VAE | Supply a VAE instance for inspection or passthrough. | |
| conditioning_inopt | CONDITIONING | Generic conditioning list or bundle. | |
| conditioning_positive_inopt | CONDITIONING | Positive conditioning branch when separated upstream. | |
| conditioning_negative_inopt | CONDITIONING | Negative conditioning branch when separated upstream. | |
| latent_inopt | LATENT | Latent dictionary (samples / noise etc.). | |
| image_inopt | IMAGE | Images or batches headed into the debugger. | |
| mask_inopt | MASK | Mask tensor payloads to monitor or route. | |
| show_typesopt | BOOLEAN | true | Include Python type names for each connected payload. |
| show_shapesopt | BOOLEAN | true | Append tensor shapes and conditioning lengths when available. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| log_summary | STRING | — |