Local-Voice/start_with_logging.py
2025-09-21 03:00:11 +08:00

113 lines
3.5 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
启动脚本示例
演示如何使用带日志记录的多进程录音系统
"""
import os
import sys
import argparse
from datetime import datetime
def ensure_logs_directory():
"""确保日志目录存在"""
log_dir = "logs"
if not os.path.exists(log_dir):
os.makedirs(log_dir)
print(f"✅ 创建日志目录: {log_dir}")
return log_dir
def cleanup_old_logs(log_dir="logs", max_files=10):
"""清理旧的日志文件"""
if not os.path.exists(log_dir):
return
log_files = []
for file in os.listdir(log_dir):
if file.endswith('.log'):
file_path = os.path.join(log_dir, file)
log_files.append((file_path, os.path.getmtime(file_path)))
# 按修改时间排序,删除最旧的文件
log_files.sort(key=lambda x: x[1])
while len(log_files) > max_files:
oldest_file = log_files[0][0]
try:
os.remove(oldest_file)
print(f"🗑️ 删除旧日志文件: {oldest_file}")
log_files.pop(0)
except Exception as e:
print(f"⚠️ 删除日志文件失败 {oldest_file}: {e}")
break
def main():
"""主函数"""
parser = argparse.ArgumentParser(
description='带日志记录的多进程录音系统启动器',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
使用示例:
python start_with_logging.py # 使用默认设置
python start_with_logging.py --clean-logs # 清理旧日志
python start_with_logging.py --log-dir my_logs # 指定日志目录
"""
)
parser.add_argument('--character', '-c', type=str, default='libai',
help='选择角色 (默认: libai)')
parser.add_argument('--log-dir', type=str, default='logs',
help='日志目录路径 (默认: logs)')
parser.add_argument('--clean-logs', action='store_true',
help='清理旧日志文件')
parser.add_argument('--max-log-files', type=int, default=10,
help='保留的最大日志文件数量 (默认: 10)')
parser.add_argument('--config', type=str,
help='配置文件路径')
parser.add_argument('--verbose', '-v', action='store_true',
help='详细输出')
args = parser.parse_args()
print("🚀 带日志记录的多进程录音系统")
print("=" * 60)
# 确保日志目录存在
log_dir = ensure_logs_directory()
# 清理旧日志文件
if args.clean_logs:
cleanup_old_logs(log_dir, args.max_log_files)
# 显示日志配置信息
print(f"📁 日志目录: {log_dir}")
print(f"🎭 角色: {args.character}")
print("=" * 60)
# 导入主模块并启动
try:
# 修改sys.argv以传递参数给主程序
sys.argv = ['multiprocess_recorder.py']
if args.character:
sys.argv.extend(['-c', args.character])
if args.config:
sys.argv.extend(['--config', args.config])
if args.verbose:
sys.argv.append('--verbose')
# 导入并运行主程序
import multiprocess_recorder
multiprocess_recorder.main()
except KeyboardInterrupt:
print("\n👋 用户中断")
except Exception as e:
print(f"❌ 启动失败: {e}")
if args.verbose:
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()