πΈ Log Reader
Read your ComfyUI log without leaving the canvas
- log
Frog Log Reader is a two-input convenience node for a problem every ComfyUI user hits: a node errors, and the reason lives in the log file you don't want to go find. This node reads your ComfyUI log and outputs the tail of it as a plain string. Wire that into a Show Text node and the log is right there on the canvas, where the error is. No switching windows, no hunting through %APPDATA%.
It finds the log for you, which is the quietly impressive part. On ComfyUI Desktop, logs live in %AppData%\ComfyUI\logs\ as timestamped comfyui_*.log files, and the reader picks the most recently modified one. On portable and standard installs, it finds comfyui.log sitting next to main.py. So whatever install flavor you're on, this node just knows where to look - that's a real convenience, because "which log file is the live one" is genuinely fiddly on Desktop, where they rotate by launch.
The inputs
- tail_lines - how many lines from the end of the log to show. Default 50, max 500. If you're chasing a stack trace, 50 is usually enough; the error's right at the end.
- filter_text - an optional keyword; when set, only lines containing that text are returned. This is the efficient mode: filter for
error, or for the class name of the node that's failing, and you skip past the noise.
What comes out
log - a STRING containing the filtered tail. Wire it to a Show Text node (the frontend's built-in one, or any text-display node) to see it on the canvas, or into anything else that consumes a string - a save node that records the log with your image, for instance.
Installing it
Same pack, same install:
cd ComfyUI/custom_nodes
git clone https://github.com/RabbitThatIsPink/FrogNodePack
or ComfyUI Manager β "Frog Node Pack". No extra dependencies.
Where people trip
A few honest limits. First, it reads the file, not the live stream - the log it shows is whatever's been written to disk at the moment the node runs, so if a node upstream is logging mid-run, you may see a slightly stale tail. Second, it's only as current as your ComfyUI's flush behavior; on a hard crash, the buffer may not have been written. Third, it reads the last run's log content by default - the log file persists across runs, so the "tail" includes prior noise unless you filter. And keep tail_lines sane: the max is 500 for a reason, and dumping the whole log into Show Text slows the UI. Filter first, then expand.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| tail_lines | INT | 501β500 | How many lines from the end of the log to show. |
| filter_text | STRING | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| log | STRING | β |