88import os
99import inspect
1010from datetime import datetime
11+ import io
1112
1213
1314class LocationFormatter (logging .Formatter ):
@@ -35,8 +36,22 @@ def setup_logger():
3536 if logger .handlers :
3637 return logger
3738
38- # Console handler with color support
39- console_handler = logging .StreamHandler (sys .stderr )
39+ # Console handler with safer encoding handling on Windows consoles
40+ # Prefer reconfiguring the existing stderr to replace unencodable chars
41+ if hasattr (sys .stderr , "reconfigure" ):
42+ try :
43+ sys .stderr .reconfigure (errors = "replace" )
44+ except Exception :
45+ pass
46+ console_handler = logging .StreamHandler (sys .stderr )
47+ else :
48+ # Fallback: wrap the underlying buffer with a TextIOWrapper that replaces errors
49+ try :
50+ encoding = getattr (sys .stderr , "encoding" , None ) or "utf-8"
51+ console_stream = io .TextIOWrapper (sys .stderr .buffer , encoding = encoding , errors = "replace" )
52+ console_handler = logging .StreamHandler (console_stream )
53+ except Exception :
54+ console_handler = logging .StreamHandler (sys .stderr )
4055 console_handler .setLevel (logging .DEBUG )
4156
4257 # Console formatter with colors (simple format for better compatibility)
@@ -51,7 +66,8 @@ def setup_logger():
5166 file_handler = logging .handlers .RotatingFileHandler (
5267 os .path .join (log_dir , "comfyui_copilot.log" ),
5368 maxBytes = 10 * 1024 * 1024 , # 10MB
54- backupCount = 7
69+ backupCount = 7 ,
70+ encoding = 'utf-8'
5571 )
5672 file_handler .setLevel (logging .DEBUG )
5773
0 commit comments