mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-11-11 22:00:07 +08:00
Changed to memory logger
This commit is contained in:
parent
1e2c74fa3e
commit
ba08ca2d2e
@ -2,7 +2,7 @@ from aiohttp import web
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from folder_paths import models_dir, user_directory, output_directory
|
from folder_paths import models_dir, user_directory, output_directory
|
||||||
from api_server.services.file_service import FileService
|
from api_server.services.file_service import FileService
|
||||||
from app.log_interceptor import logs
|
import app.logger
|
||||||
|
|
||||||
class InternalRoutes:
|
class InternalRoutes:
|
||||||
'''
|
'''
|
||||||
@ -34,13 +34,7 @@ class InternalRoutes:
|
|||||||
|
|
||||||
@self.routes.get('/logs')
|
@self.routes.get('/logs')
|
||||||
async def get_logs(request):
|
async def get_logs(request):
|
||||||
return web.json_response([
|
return web.json_response(app.logger.get_logs())
|
||||||
{
|
|
||||||
'timestamp': dt.isoformat(),
|
|
||||||
'message': message
|
|
||||||
}
|
|
||||||
for dt, message in logs
|
|
||||||
])
|
|
||||||
|
|
||||||
def get_app(self):
|
def get_app(self):
|
||||||
if self._app is None:
|
if self._app is None:
|
||||||
|
|||||||
@ -1,21 +0,0 @@
|
|||||||
import io
|
|
||||||
import threading
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from collections import deque
|
|
||||||
logs = deque(maxlen=300)
|
|
||||||
|
|
||||||
class LogInterceptor(io.TextIOWrapper):
|
|
||||||
def __init__(self, stream, *args, **kwargs):
|
|
||||||
buffer = stream.buffer
|
|
||||||
encoding = stream.encoding
|
|
||||||
super().__init__(buffer, *args, **kwargs, encoding=encoding)
|
|
||||||
self._lock = threading.Lock()
|
|
||||||
|
|
||||||
def write(self, data):
|
|
||||||
with self._lock:
|
|
||||||
logs.append((datetime.now(), data))
|
|
||||||
super().write(data)
|
|
||||||
|
|
||||||
def flush(self):
|
|
||||||
super().flush()
|
|
||||||
25
app/logger.py
Normal file
25
app/logger.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import logging
|
||||||
|
from logging.handlers import MemoryHandler
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
|
logs = None
|
||||||
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
|
def get_logs():
|
||||||
|
return '\n'.join([formatter.format(x) for x in logs])
|
||||||
|
|
||||||
|
def setup_logger(capacity=300):
|
||||||
|
global logs
|
||||||
|
if logs: return
|
||||||
|
|
||||||
|
# Setup default global logger
|
||||||
|
logger = logging.getLogger()
|
||||||
|
logger.setLevel(logging.INFO)
|
||||||
|
logger.addHandler(logging.StreamHandler())
|
||||||
|
|
||||||
|
# Create a memory handler with a deque as its buffer
|
||||||
|
logs = deque(maxlen=capacity)
|
||||||
|
memory_handler = MemoryHandler(capacity, flushLevel=logging.INFO)
|
||||||
|
memory_handler.buffer = logs
|
||||||
|
memory_handler.setFormatter(formatter)
|
||||||
|
logger.addHandler(memory_handler)
|
||||||
7
main.py
7
main.py
@ -1,11 +1,8 @@
|
|||||||
import comfy.options
|
import comfy.options
|
||||||
comfy.options.enable_args_parsing()
|
comfy.options.enable_args_parsing()
|
||||||
|
|
||||||
# Intercept logs for error reporting
|
from app.logger import setup_logger
|
||||||
import sys
|
setup_logger()
|
||||||
from app.log_interceptor import LogInterceptor
|
|
||||||
sys.stdout = LogInterceptor(sys.stdout)
|
|
||||||
sys.stderr = LogInterceptor(sys.stderr)
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import importlib.util
|
import importlib.util
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user