diff --git a/src-python/model.py b/src-python/model.py index c7f5f891..251d9869 100644 --- a/src-python/model.py +++ b/src-python/model.py @@ -4,7 +4,6 @@ from subprocess import Popen from os import makedirs as os_makedirs from os import path as os_path from datetime import datetime -from logging import getLogger, FileHandler, Formatter, INFO from time import sleep from queue import Queue 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_image import OverlayImage from models.watchdog.watchdog import Watchdog -from utils import errorLogging +from utils import errorLogging, setupLogger class threadFnc(Thread): def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs): @@ -130,14 +129,8 @@ class Model: def startLogger(self): 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_handler = FileHandler(file_name, encoding="utf-8", delay=True) - formatter = Formatter("[%(asctime)s] %(message)s") - file_handler.setFormatter(formatter) - logger.addHandler(file_handler) - self.logger = logger + self.logger = setupLogger("log", file_name) self.logger.disabled = False def stopLogger(self): diff --git a/src-python/utils.py b/src-python/utils.py index 4b81ef69..31d589bd 100644 --- a/src-python/utils.py +++ b/src-python/utils.py @@ -5,6 +5,7 @@ import random from typing import Union from os import path as os_path, rename as os_rename import traceback +import logging from PIL.Image import open as Image_open def getImageFile(file_name): @@ -70,32 +71,61 @@ def removeLog(): with open('process.log', 'w', encoding="utf-8") as f: 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: + global process_logger + if process_logger is None: + process_logger = setupLogger("process", "process.log", logging.INFO) + response = { "status": 348, "log": log, "data": str(data), } - - with open('process.log', 'a', encoding="utf-8") as f: - f.write(f"log: {response}\n") - + process_logger.info(response) response = json.dumps(response) print(response, flush=True) 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 = { "status": status, "endpoint": endpoint, "result": result, } - - with open('process.log', 'a', encoding="utf-8") as f: - f.write(f"log: {response}\n") - + process_logger.info(response) response = json.dumps(response) print(response, flush=True) +error_logger = None def errorLogging() -> None: - with open('error.log', 'a') as f: - traceback.print_exc(file=f) \ No newline at end of file + global error_logger + if error_logger is None: + error_logger = setupLogger("error", "error.log", logging.ERROR) + + error_logger.error(traceback.format_exc()) \ No newline at end of file