文本日志丨调试
ComfyUI's printf — with a timestamp and a level
- source
- source
- printed
Every language has its print(), and ComfyUI has TextLogPrinter. It's the pack's dedicated "log this message to the terminal" node, aimed at the debugging workflow that comes up constantly: you want to see what a value is at a specific point in the graph without tearing the graph apart to do it.
Display name: "文本日志丨调试" ("text log / debug").
How it works
Give it a message and it prints that message to ComfyUI's console - the terminal window where you launched ComfyUI, not a widget on the canvas. Before the message it writes a header built from the node's own settings:
title- a label for the log line (default "文本日志"), so you can tell your print statements apart.level- INFO / WARN / ERROR / DEBUG. Mostly organizational, but it's what makes your log lines greppable when the terminal is full of node spam.include_timestamp(default on) - adds the time to the header.include_counter(default off) - adds an incrementing counter, useful for looped or re-run workflows to tell runs apart.
The header is built, the message is printed (an empty message prints (空) - "(empty)" - rather than a blank line), and that's it.
The passthrough that makes it usable inline
Here's the part that separates this from a random print: the node has an optional source input of any type, and it returns that exact value as its source output untouched, alongside a printed BOOLEAN that's always True. So you can splice TextLogPrinter straight into the middle of a live connection - whatever was flowing through keeps flowing, and you get a log line every run at zero cost to the graph. That passthrough pattern is the standard trick of debug nodes in the plumbing layer (comfyui-node-plumbing.md): a node that only observes can stay in the graph while you iterate.
If you don't want the passthrough and just need to log a message, ignore source entirely - the message text box is all you need.
Inputs and outputs
message(required) - what to print. Multiline.title,level,include_timestamp,include_counter(required) - header settings.source(optional, any) - passthrough input; wire this to log and pass through in one go.- Outputs:
source(passthrough, any) andprinted(BOOLEAN, always true).
Installing it
TextLogPrinter ships in ComfyUI-QING, GAO-SHIQING's 79-node all-in-one pack:
cd ComfyUI/custom_nodes
git clone https://github.com/GAO-SHIQING/ComfyUI-QING
cd ComfyUI-QING
python install_dependencies.py
Restart ComfyUI. ComfyUI Manager users can search "ComfyUI-QING" and install from the GUI.
Common issues
- "I see nothing on the canvas." That's expected - this node writes to the server console, not the UI. Look at the terminal where ComfyUI is running. This is the single most common confusion with the whole QING logging family.
- Log lines all look the same across runs. Turn on
include_counter(or timestamp if it's off) so you can tell runs apart. - Nothing prints at all. The node only fires when it executes, so if it's upstream of nothing that runs (it's an output node, so it should always run - but check it isn't bypassed or muted), you get silence.
When the ShowMePure-style canvas viewer isn't enough and you want a real trail in the logs, this is the node to reach for. It's a glorified print statement - and for debugging, that's exactly what you want.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| message | STRING | — | |
| title | STRING | 文本日志 | — |
| level | COMBO | INFO | 4 options: INFO, WARN, ERROR, DEBUG |
| include_timestamp | BOOLEAN | true | — |
| include_counter | BOOLEAN | false | — |
| sourceopt | * | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| source | * | — |
| printed | BOOLEAN | — |