coolstuff / core /service_logs.py
SamuelLance73's picture
Automated deployment update from ML build
2fc86a1 verified
Raw
History Blame Contribute Delete
2.23 kB
_H='visual_debugger'
_G='code_server'
_F='llm_proxy'
_E='open_webui'
_D='sliver'
_C='ligolo'
_B='chisel'
_A=True
import os,sys
from pathlib import Path
import threading
from collections import namedtuple
from loguru import logger
COVERT_LOGGING_MODE=2
METRICS_DIR='/home/user/.torch_metrics'
ServiceLogs=namedtuple('ServiceLogs',['ts','fb','tm',_B,'gost',_C,_D,'caddy',_E,_F,_G,_H])
class LoguruSubprocessBridge:
def __init__(A,prefix):A.prefix=prefix;B,C=os.pipe();A.r=B;A.w=C;threading.Thread(target=A._reader,daemon=_A).start()
def _reader(A):
try:
with os.fdopen(A.r,'r',errors='replace')as B:
for C in B:A.write(C)
except Exception:pass
def fileno(A):return A.w
def write(A,s):B=s.rstrip('\r\n');logger.bind(prefix=A.prefix).info(B)
def flush(A):0
def setup_service_logs():
M='INFO';L='prefix';K='extra';J='VISDBG';I='CODESRV';H='LITELLM';G='OWUI';F='CADDY';E='SLIVER';D='LIGOLO';C='GOST';B='CHISEL';A='PLAYIT';logger.remove()
if COVERT_LOGGING_MODE in(1,2):
Path(METRICS_DIR).mkdir(parents=_A,exist_ok=_A);N={'ts':('TS','ts_daemon.log'),'fb':('FB','fb.log'),'tm':(A,'tm_daemon.log'),_B:(B,'chisel.log'),'gost':(C,'gost.log'),_C:(D,'ligolo.log'),_D:(E,'sliver.log'),'caddy':(F,'caddy.log'),_E:(G,'open_webui.log'),_F:(H,'llm_proxy.log'),_G:(I,'code_server.log'),_H:(J,'visual_debugger.log')}
for(R,(O,P))in N.items():logger.add(f"{METRICS_DIR}/{P}",filter=lambda record,p=O:record[K].get(L)==p,format='{message}\n',level=M,enqueue=_A)
if COVERT_LOGGING_MODE==2:
def Q(record):
if L in record[K]:return'[{extra[prefix]}] {message}\n'
return'<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>\n'
logger.add(sys.stdout,format=Q,level=M,enqueue=_A)
return ServiceLogs(ts=LoguruSubprocessBridge('TS'),fb=LoguruSubprocessBridge('FB'),tm=LoguruSubprocessBridge(A),chisel=LoguruSubprocessBridge(B),gost=LoguruSubprocessBridge(C),ligolo=LoguruSubprocessBridge(D),sliver=LoguruSubprocessBridge(E),caddy=LoguruSubprocessBridge(F),open_webui=LoguruSubprocessBridge(G),llm_proxy=LoguruSubprocessBridge(H),code_server=LoguruSubprocessBridge(I),visual_debugger=LoguruSubprocessBridge(J))