Files
change_hair_3090/hair_service_sd/common/logger.py
T
colomi 0eb61f3e60 初始化换发型项目:3个微服务代码 + 部署脚本
包含:
- hair_service_sd: 换发型/换发色算法服务 (端口 8801)
- photo_service: LoRA 训练调度服务 (端口 32678)
- stable-diffusion-webui: SD WebUI 推理服务 (端口 57860)
- kohya_ss_home: 训练环境代码
- meidaojia: 监控测试脚本
- setup.sh: 一键部署脚本 (conda环境恢复 + 配置生成 + 完整性检查)
- start_all_services.sh: 启动3个服务
- configure.ini.template: 路径模板化 (BASE_DIR自动推导)
- conda_envs/py310.yml: py310 环境定义

大文件 (weights/, models/, data/, conda_envs/*.tar.gz 等) 通过 .gitignore 排除,
由网盘单独上传。
2026-07-11 18:11:49 +08:00

64 lines
1.7 KiB
Python

#!/usr/bin/python
# coding=utf-8
import os
from logging.handlers import TimedRotatingFileHandler
import logging
import configparser
config = configparser.ConfigParser() # 创建对象
config.read("config/configure.ini", encoding="utf-8") # 读取配置文件,如果配置文件不存在则创建
"""
自定义日志处理
"""
class LogFactory(object):
@staticmethod
def getLogger(log_name,log_level=None):
if log_level is None:
log_level = LogFactory.getLogLevel(getLevel())
logger = logging.getLogger(log_name)
path = getPath()
isExists=os.path.exists(path)
if not isExists:
os.makedirs(path)
log_file = os.path.join(path, '{}.log'.format(log_name))
if len(logger.handlers) <= 0:
handler = TimedRotatingFileHandler(log_file, when='D', interval=1)
else:
handler = logger.handlers[0]
formatter = logging.Formatter("%(asctime)s-%(thread)d-%(filename)s-%(levelname)s-%(message)s", "%Y-%m-%d %H:%M:%S")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(log_level)
return logger
@staticmethod
def getLogLevel(log_level):
log_level = getattr(logging, log_level.upper(), None)
if log_level is None:
raise Exception("No such log level.")
return log_level
def getPath():
import sys
process_order = sys.argv[1] if len(sys.argv) > 1 else None
logpath = config.get('logger', "logpath")
logpath = logpath.rstrip("/")
if process_order is None:
return logpath
return logpath
def getLevel():
return config.get('logger', "level")