SP_DebugLogger
Print whatever's flowing through a wire without breaking it
- any_input
- output
- log_message_string
The single most useful class of node when a ComfyUI graph is doing something you don't understand is the one that just tells you what's actually there. SP_DebugLogger does exactly that: wire anything into it, and it "logs the string representation of any input to the console with a colored prefix," in the pack's own words - then passes the same value straight through, so you can leave it inline in a working graph without changing behavior.
How it works
Drop it between two nodes that are already connected, feed the wire into any_input, and take output back out to wherever the wire was originally headed. Nothing about the data changes - it's a pure passthrough - but every time that part of the graph executes, whatever was carried through gets printed to ComfyUI's console with the prefix you set, so you can tell at a glance which debug node produced which line when you've got several dropped into a big workflow.
Inputs and outputs
any_input(required, any type) - whatever you want visibility into.prefix(STRING, required, defaultDEBUG:) - the label on each console line. Worth customizing per instance if you're using more than one, otherwise every log line looks identical and you lose the "which node was this" information.- Outputs:
output- the same value, unchanged, so the node can sit inline.log_message_string- the exact string that got printed, which you can also route somewhere else instead of just reading the console.
Installing it
ComfyUI Manager - search "SP-Nodes", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bananasss00/ComfyUI-SP-Nodes
then restart ComfyUI. No dependencies beyond the base pack, and nothing to configure.
Common issues & troubleshooting
You don't see anything in the console. Check you're actually looking at the right console - the terminal ComfyUI was launched from, not the browser's dev console. Browser-side logging is a separate thing entirely from what this node writes.
The logged value is unreadable - a huge tensor dump or an object repr instead of something meaningful. This node logs a string representation of whatever you feed it, which for something like an IMAGE tensor is going to be dense, unhelpful noise rather than a useful summary. It's most useful on things that stringify cleanly - STRING, INT, FLOAT, small dicts, conditioning metadata - not raw image or latent tensors. For those, you're usually better off previewing the image itself or checking shape via a dedicated node rather than reading a tensor repr in a log line.
Multiple debug nodes and you can't tell which line is which. That's what prefix is for - give each one a distinct label ("after upscale:", "pre-sampler:") rather than leaving every instance at the default DEBUG:.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| any_input | * | — | |
| prefix | STRING | DEBUG: | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| output | * | — |
| log_message_string | STRING | — |