#!/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()