80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python3
 | |
| """
 | |
| Real-time log viewer for MCP Server
 | |
| """
 | |
| 
 | |
| import os
 | |
| import time
 | |
| import sys
 | |
| from pathlib import Path
 | |
| 
 | |
| def follow_logs(log_file="mcp_server.log"):
 | |
|     """Follow log file in real-time"""
 | |
|     log_path = Path(log_file)
 | |
|     
 | |
|     if not log_path.exists():
 | |
|         print(f"Log file {log_file} not found. Creating empty file...")
 | |
|         log_path.touch()
 | |
|     
 | |
|     print(f"Following logs from: {log_path.absolute()}")
 | |
|     print("Press Ctrl+C to stop")
 | |
|     print("-" * 80)
 | |
|     
 | |
|     # Get initial file size
 | |
|     with open(log_path, 'r') as f:
 | |
|         f.seek(0, 2)  # Go to end of file
 | |
|         last_size = f.tell()
 | |
|     
 | |
|     try:
 | |
|         while True:
 | |
|             with open(log_path, 'r') as f:
 | |
|                 f.seek(last_size)
 | |
|                 new_lines = f.readlines()
 | |
|                 if new_lines:
 | |
|                     for line in new_lines:
 | |
|                         print(line.rstrip())
 | |
|                     last_size = f.tell()
 | |
|             
 | |
|             time.sleep(0.1)  # Check every 100ms
 | |
|             
 | |
|     except KeyboardInterrupt:
 | |
|         print("\nStopped following logs")
 | |
| 
 | |
| def show_recent_logs(log_file="mcp_server.log", lines=50):
 | |
|     """Show recent log lines"""
 | |
|     log_path = Path(log_file)
 | |
|     
 | |
|     if not log_path.exists():
 | |
|         print(f"Log file {log_file} not found.")
 | |
|         return
 | |
|     
 | |
|     with open(log_path, 'r') as f:
 | |
|         all_lines = f.readlines()
 | |
|         recent_lines = all_lines[-lines:] if len(all_lines) > lines else all_lines
 | |
|         
 | |
|         print(f"Recent {len(recent_lines)} lines from {log_path.absolute()}:")
 | |
|         print("-" * 80)
 | |
|         for line in recent_lines:
 | |
|             print(line.rstrip())
 | |
| 
 | |
| def main():
 | |
|     if len(sys.argv) > 1:
 | |
|         command = sys.argv[1]
 | |
|         
 | |
|         if command == "follow":
 | |
|             log_file = sys.argv[2] if len(sys.argv) > 2 else "mcp_server.log"
 | |
|             follow_logs(log_file)
 | |
|         elif command == "recent":
 | |
|             log_file = sys.argv[2] if len(sys.argv) > 2 else "mcp_server.log"
 | |
|             lines = int(sys.argv[3]) if len(sys.argv) > 3 else 50
 | |
|             show_recent_logs(log_file, lines)
 | |
|         else:
 | |
|             print("Usage:")
 | |
|             print("  python view_logs.py follow [log_file]  # Follow logs in real-time")
 | |
|             print("  python view_logs.py recent [log_file] [lines]  # Show recent logs")
 | |
|     else:
 | |
|         # Default: show recent logs
 | |
|         show_recent_logs()
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()  | 
