forked from LengKundee/MQL5-Google-Onedrive
- Created `mt5/MQL5/Experts/EXNESS_GenX_Trader.mq5` as a copy of `SMC_TrendBreakout_MTF_EA.mq5` to match user's local setup. - Replaced invalid `iDonchian` calls with manual `CopyHigh`/`CopyLow` logic in both `EXNESS_GenX_Trader.mq5` and `SMC_TrendBreakout_MTF_EA.mq5` to fix compilation errors. - Added `scripts/sync_logs.py` to provide a simple log monitoring tool.
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Sync/Monitor Logs Script
|
|
This script monitors the latest log file in the logs/ directory and prints new lines to the console.
|
|
It serves as a tool to "keep up running" by surfacing logs automatically.
|
|
"""
|
|
|
|
import os
|
|
import time
|
|
import glob
|
|
from pathlib import Path
|
|
|
|
LOG_DIR = Path("logs")
|
|
|
|
def get_latest_log_file():
|
|
"""Returns the path to the latest log file in the logs directory."""
|
|
if not LOG_DIR.exists():
|
|
return None
|
|
|
|
files = list(LOG_DIR.glob("*.log"))
|
|
if not files:
|
|
return None
|
|
|
|
# Sort by modification time
|
|
return max(files, key=os.path.getmtime)
|
|
|
|
def tail_file(filepath):
|
|
"""Tails the specified file, printing new lines as they are added."""
|
|
print(f"Monitoring log file: {filepath}")
|
|
print("Press Ctrl+C to stop.")
|
|
|
|
with open(filepath, "r") as f:
|
|
# Move to the end of the file
|
|
f.seek(0, os.SEEK_END)
|
|
|
|
while True:
|
|
line = f.readline()
|
|
if not line:
|
|
time.sleep(1.0)
|
|
continue
|
|
|
|
print(line, end="")
|
|
|
|
def main():
|
|
print("Starting log sync/monitor...")
|
|
|
|
if not LOG_DIR.exists():
|
|
print(f"Log directory '{LOG_DIR}' does not exist. Waiting...")
|
|
|
|
filepath = None
|
|
while not filepath:
|
|
filepath = get_latest_log_file()
|
|
if not filepath:
|
|
time.sleep(5)
|
|
# Check again
|
|
if LOG_DIR.exists():
|
|
print("Waiting for log files to appear...")
|
|
|
|
try:
|
|
tail_file(filepath)
|
|
except KeyboardInterrupt:
|
|
print("\nStopping log monitor.")
|
|
except Exception as e:
|
|
print(f"\nError monitoring log: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|