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