giteamcp/view_logs.py
2025-07-15 14:32:59 +05:30

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()