Changed to memory logger

This commit is contained in:
pythongosssss 2024-08-29 19:18:33 +01:00
parent 1e2c74fa3e
commit ba08ca2d2e
4 changed files with 29 additions and 34 deletions

View File

@ -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:

View File

@ -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
View 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)

View File

@ -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