Merge branch 'error_log' into for_webui

This commit is contained in:
misyaguziya
2024-12-27 22:12:21 +09:00
2 changed files with 42 additions and 19 deletions

View File

@@ -4,7 +4,6 @@ from subprocess import Popen
from os import makedirs as os_makedirs from os import makedirs as os_makedirs
from os import path as os_path from os import path as os_path
from datetime import datetime from datetime import datetime
from logging import getLogger, FileHandler, Formatter, INFO
from time import sleep from time import sleep
from queue import Queue from queue import Queue
from threading import Thread from threading import Thread
@@ -30,7 +29,7 @@ from models.transcription.transcription_whisper import checkWhisperWeight, downl
from models.overlay.overlay import Overlay from models.overlay.overlay import Overlay
from models.overlay.overlay_image import OverlayImage from models.overlay.overlay_image import OverlayImage
from models.watchdog.watchdog import Watchdog from models.watchdog.watchdog import Watchdog
from utils import errorLogging from utils import errorLogging, setupLogger
class threadFnc(Thread): class threadFnc(Thread):
def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs): def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs):
@@ -130,14 +129,8 @@ class Model:
def startLogger(self): def startLogger(self):
os_makedirs(config.PATH_LOGS, exist_ok=True) os_makedirs(config.PATH_LOGS, exist_ok=True)
logger = getLogger()
logger.setLevel(INFO)
file_name = os_path.join(config.PATH_LOGS, f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log") file_name = os_path.join(config.PATH_LOGS, f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log")
file_handler = FileHandler(file_name, encoding="utf-8", delay=True) self.logger = setupLogger("log", file_name)
formatter = Formatter("[%(asctime)s] %(message)s")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
self.logger = logger
self.logger.disabled = False self.logger.disabled = False
def stopLogger(self): def stopLogger(self):

View File

@@ -5,6 +5,7 @@ import random
from typing import Union from typing import Union
from os import path as os_path, rename as os_rename from os import path as os_path, rename as os_rename
import traceback import traceback
import logging
from PIL.Image import open as Image_open from PIL.Image import open as Image_open
def getImageFile(file_name): def getImageFile(file_name):
@@ -70,32 +71,61 @@ def removeLog():
with open('process.log', 'w', encoding="utf-8") as f: with open('process.log', 'w', encoding="utf-8") as f:
f.write("") f.write("")
def setupLogger(name, log_file, level=logging.INFO):
"""
特定の名前とログファイルを持つロガーを設定します。
"""
# ロガーを作成
logger = logging.getLogger(name)
logger.setLevel(level)
logger.propagate = False # 親ロガーへの伝播を防ぐ
# ハンドラーを作成
file_handler = logging.FileHandler(log_file, encoding="utf-8", delay=True)
file_handler.setLevel(level)
# フォーマッターを設定
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# ロガーにハンドラーを追加
logger.addHandler(file_handler)
return logger
process_logger = None
def printLog(log:str, data:Any=None) -> None: def printLog(log:str, data:Any=None) -> None:
global process_logger
if process_logger is None:
process_logger = setupLogger("process", "process.log", logging.INFO)
response = { response = {
"status": 348, "status": 348,
"log": log, "log": log,
"data": str(data), "data": str(data),
} }
process_logger.info(response)
with open('process.log', 'a', encoding="utf-8") as f:
f.write(f"log: {response}\n")
response = json.dumps(response) response = json.dumps(response)
print(response, flush=True) print(response, flush=True)
def printResponse(status:int, endpoint:str, result:Any=None) -> None: def printResponse(status:int, endpoint:str, result:Any=None) -> None:
global process_logger
if process_logger is None:
process_logger = setupLogger("process", "process.log", logging.INFO)
response = { response = {
"status": status, "status": status,
"endpoint": endpoint, "endpoint": endpoint,
"result": result, "result": result,
} }
process_logger.info(response)
with open('process.log', 'a', encoding="utf-8") as f:
f.write(f"log: {response}\n")
response = json.dumps(response) response = json.dumps(response)
print(response, flush=True) print(response, flush=True)
error_logger = None
def errorLogging() -> None: def errorLogging() -> None:
with open('error.log', 'a') as f: global error_logger
traceback.print_exc(file=f) if error_logger is None:
error_logger = setupLogger("error", "error.log", logging.ERROR)
error_logger.error(traceback.format_exc())