| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- """实时查看对话日志"""
- import os
- import time
- from pathlib import Path
- from datetime import datetime
- # 日志目录
- LOGS_DIR = Path(__file__).parent / "logs"
- today = datetime.now().strftime("%Y-%m-%d")
- LOG_FILE = LOGS_DIR / f"dialogue_{today}.log"
- def tail_log_file(filename, interval=1):
- """实时查看日志文件 (类似tail -f)"""
-
- print("\n" + "="*60)
- print(f"📝 实时查看对话日志")
- print(f"📂 日志文件: {filename}")
- print("="*60)
- print("\n按 Ctrl+C 停止查看\n")
-
- # 如果文件不存在,等待创建
- while not filename.exists():
- print(f"⏳ 等待日志文件创建: {filename}")
- time.sleep(interval)
-
- # 打开文件
- with open(filename, 'r', encoding='utf-8') as f:
- # 移动到文件末尾
- f.seek(0, 2)
-
- try:
- while True:
- line = f.readline()
- if line:
- print(line, end='')
- else:
- time.sleep(interval)
- except KeyboardInterrupt:
- print("\n\n✅ 停止查看日志")
- def view_full_log(filename):
- """查看完整日志"""
-
- print("\n" + "="*60)
- print(f"📝 查看完整对话日志")
- print(f"📂 日志文件: {filename}")
- print("="*60 + "\n")
-
- if not filename.exists():
- print(f"❌ 日志文件不存在: {filename}")
- return
-
- with open(filename, 'r', encoding='utf-8') as f:
- content = f.read()
- print(content)
-
- print("\n" + "="*60)
- print("✅ 日志查看完成")
- print("="*60 + "\n")
- def list_log_files():
- """列出所有日志文件"""
-
- print("\n" + "="*60)
- print(f"📂 日志文件列表")
- print(f"📁 目录: {LOGS_DIR}")
- print("="*60 + "\n")
-
- if not LOGS_DIR.exists():
- print("❌ 日志目录不存在")
- return
-
- log_files = sorted(LOGS_DIR.glob("dialogue_*.log"), reverse=True)
-
- if not log_files:
- print("📭 暂无日志文件")
- return
-
- for i, log_file in enumerate(log_files, 1):
- size = log_file.stat().st_size
- size_kb = size / 1024
- mtime = datetime.fromtimestamp(log_file.stat().st_mtime)
- print(f"{i}. {log_file.name}")
- print(f" 大小: {size_kb:.2f} KB")
- print(f" 修改时间: {mtime.strftime('%Y-%m-%d %H:%M:%S')}")
- print()
- if __name__ == "__main__":
- import sys
-
- if len(sys.argv) > 1:
- command = sys.argv[1]
-
- if command == "tail":
- # 实时查看
- tail_log_file(LOG_FILE)
- elif command == "view":
- # 查看完整日志
- view_full_log(LOG_FILE)
- elif command == "list":
- # 列出所有日志
- list_log_files()
- else:
- print(f"❌ 未知命令: {command}")
- print("\n使用方法:")
- print(" python view_logs.py tail # 实时查看日志")
- print(" python view_logs.py view # 查看完整日志")
- print(" python view_logs.py list # 列出所有日志文件")
- else:
- # 默认实时查看
- tail_log_file(LOG_FILE)
|