Nodes/h4 ToolKit/h4 : Execution Logger (v1.0.0) - Console Mirror
ComfyUI Node

h4 : Execution Logger (v1.0.0) - Console Mirror

The Execution Logger

By m3rr·Created 11 months ago·Updated 2 months ago· 0
h4 : Execution Logger (v1.0.0) - Console Mirror
  • 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
log_levelINFO
prefix[EXEC]
show_typestrue
show_shapestrue

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, or WARNING, 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_level to WARNING so they clear the info chatter, or set a distinctive prefix like [MY_RUN].
  • The log output lives in the ComfyUI console; log_summary is the string you route elsewhere.
Categoryh4 Toolkit/Debug

Inputs (14)

NameTypeDefaultDescription
log_levelCOMBOINFOSelect the console severity used for emitted messages.
prefixSTRING[EXEC]Human-readable tag prepended to every log entry.
model_inoptMODELConnect any diffusion model blob to inspect or forward downstream.
clip_inoptCLIPAttach a CLIP text encoder payload for logging and pass-through.
clip_vision_inoptCLIP_VISIONOptional CLIP vision encoder payload.
vae_inoptVAESupply a VAE instance for inspection or passthrough.
conditioning_inoptCONDITIONINGGeneric conditioning list or bundle.
conditioning_positive_inoptCONDITIONINGPositive conditioning branch when separated upstream.
conditioning_negative_inoptCONDITIONINGNegative conditioning branch when separated upstream.
latent_inoptLATENTLatent dictionary (samples / noise etc.).
image_inoptIMAGEImages or batches headed into the debugger.
mask_inoptMASKMask tensor payloads to monitor or route.
show_typesoptBOOLEANtrueInclude Python type names for each connected payload.
show_shapesoptBOOLEANtrueAppend tensor shapes and conditioning lengths when available.

Outputs (1)

NameTypeDescription
log_summarySTRING