Skip to content

Commit c7c14d2

Browse files
committed
Auto dump logs, fix workstation input schema
1 parent 6fdd482 commit c7c14d2

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
lines changed

unilabos/app/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ def main():
218218

219219
if hasattr(BasicConfig, "log_level"):
220220
logger.info(f"Log level set to '{BasicConfig.log_level}' from config file.")
221-
configure_logger(loglevel=BasicConfig.log_level)
221+
configure_logger(loglevel=BasicConfig.log_level, working_dir=working_dir)
222222

223223
if args_dict["addr"] == "test":
224224
print_status("使用测试环境地址", "info")

unilabos/devices/virtual/virtual_multiway_valve.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class VirtualMultiwayValve:
77
"""
88
虚拟九通阀门 - 0号位连接transfer pump,1-8号位连接其他设备 🔄
99
"""
10-
def __init__(self, port: str = "VIRTUAL", positions: int = 8):
10+
def __init__(self, port: str = "VIRTUAL", positions: int = 8, **kwargs):
1111
self.port = port
1212
self.max_positions = positions # 1-8号位
1313
self.total_positions = positions + 1 # 0-8号位,共9个位置

unilabos/devices/workstation/workstation_base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ async def update_resource_example(self):
147147

148148
def __init__(
149149
self,
150-
deck: Deck,
150+
deck: Optional[Deck],
151151
*args,
152152
**kwargs, # 必须有kwargs
153153
):
@@ -349,5 +349,5 @@ def workflow_runtime(self) -> float:
349349

350350

351351
class ProtocolNode(WorkstationBase):
352-
def __init__(self, deck: Optional[PLRResource], *args, **kwargs):
352+
def __init__(self, protocol_type: List[str], deck: Optional[PLRResource], *args, **kwargs):
353353
super().__init__(deck, *args, **kwargs)

unilabos/registry/devices/work_station.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6036,7 +6036,12 @@ workstation:
60366036
properties:
60376037
deck:
60386038
type: string
6039+
protocol_type:
6040+
items:
6041+
type: string
6042+
type: array
60396043
required:
6044+
- protocol_type
60406045
- deck
60416046
type: object
60426047
data:

unilabos/utils/log.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,14 @@ def format(self, record):
124124
def _format_basic(self, record):
125125
"""基本格式化,不包含颜色"""
126126
datetime_str = datetime.fromtimestamp(record.created).strftime("%y-%m-%d [%H:%M:%S,%f")[:-3] + "]"
127-
filename = os.path.basename(record.filename).rsplit(".", 1)[0] # 提取文件名(不含路径和扩展名)
127+
filename = record.filename.replace(".py", "").split("\\")[-1] # 提取文件名(不含路径和扩展名)
128+
if "/" in filename:
129+
filename = filename.split("/")[-1]
128130
module_path = f"{record.name}.{filename}"
129131
func_line = f"{record.funcName}:{record.lineno}"
132+
right_info = f" [{func_line}] [{module_path}]"
130133

131-
formatted_message = f"{datetime_str} [{record.levelname}] [{module_path}] [{func_line}]: {record.getMessage()}"
134+
formatted_message = f"{datetime_str} [{record.levelname}] {record.getMessage()}{right_info}"
132135

133136
if record.exc_info:
134137
exc_text = self.formatException(record.exc_info)
@@ -150,7 +153,7 @@ def formatException(self, exc_info):
150153

151154

152155
# 配置日志处理器
153-
def configure_logger(loglevel=None):
156+
def configure_logger(loglevel=None, working_dir=None):
154157
"""配置日志记录器
155158
156159
Args:
@@ -191,9 +194,30 @@ def configure_logger(loglevel=None):
191194

192195
# 添加处理器到根日志记录器
193196
root_logger.addHandler(console_handler)
197+
198+
# 如果指定了工作目录,添加文件处理器
199+
if working_dir is not None:
200+
logs_dir = os.path.join(working_dir, "logs")
201+
os.makedirs(logs_dir, exist_ok=True)
202+
203+
# 生成日志文件名:日期 时间.log
204+
log_filename = datetime.now().strftime("%Y-%m-%d %H-%M-%S") + ".log"
205+
log_filepath = os.path.join(logs_dir, log_filename)
206+
207+
# 创建文件处理器
208+
file_handler = logging.FileHandler(log_filepath, encoding="utf-8")
209+
file_handler.setLevel(root_logger.level)
210+
211+
# 使用不带颜色的格式化器
212+
file_formatter = ColoredFormatter(use_colors=False)
213+
file_handler.setFormatter(file_formatter)
214+
215+
root_logger.addHandler(file_handler)
216+
194217
logging.getLogger("asyncio").setLevel(logging.INFO)
195218
logging.getLogger("urllib3").setLevel(logging.INFO)
196219

220+
197221
# 配置日志系统
198222
configure_logger()
199223

0 commit comments

Comments
 (0)