On Windows, when ComfyUI is launched without an attached console (e.g.
from a desktop shortcut or detached process), sys.__stdout__ may point
to an invalid console handle. Calling flush() on such a handle raises
OSError: [Errno 22] Invalid argument, which propagates up through any
code that calls print() and crashes every prompt execution.
Wrap super().flush() in LogInterceptor.flush() with the same
try/except (OSError, ValueError): pass pattern that is already used
elsewhere in the codebase for exactly this scenario. A failed flush on
a broken console handle just means the line isn't force-drained to that
console; content still reaches log_file and the in-memory log buffers.
Co-Authored-By: Octopus <liyuan851277048@icloud.com>
* nit
* Add option to log non-error output to stdout
- No change to default behaviour
- Adds CLI argument: --log-stdout
- With this arg present, any logging of a level below logging.ERROR will be sent to stdout instead of stderr
* Add /logs/raw and /logs/subscribe for getting logs on frontend
Hijacks stderr/stdout to send all output data to the client on flush
* Use existing send sync method
* Fix get_logs should return string
* Fix bug
* pass no server
* fix tests
* Fix output flush on linux
* Add route for getting output logs
* Include ComfyUI version
* Move to own function
* Changed to memory logger
* Unify logger setup logic
* Fix get version git fallback
---------
Co-authored-by: pythongosssss <125205205+pythongosssss@users.noreply.github.com>