import time
import os
import logging
def stream_log_files(log_file_patterns, interval=60, output_file="streamed_logs.txt"):
"""
Streams data from log files matching specified patterns.
Args:
log_file_patterns (list): A list of file patterns to monitor (e.g., ["*.log", "app*.txt"]).
interval (int): Polling interval in seconds.
output_file (str): File to write the streamed log data to.
"""
logging.basicConfig(level=logging.INFO)
while True:
try:
for pattern in log_file_patterns:
for filename in glob.glob(pattern): #using glob for file matching
try:
with open(filename, 'r', encoding='utf-8') as f:
for line in f:
logged_message = f"{time.strftime('%Y-%m-%d %H:%M:%S')} - {filename}: {line.strip()}\n" #Timestamp and filename
with open(output_file, 'a') as outfile:
outfile.write(logged_message)
logging.info(f"Logged from {filename}") # Log to console
except FileNotFoundError:
logging.warning(f"File not found: {filename}")
except Exception as e:
logging.error(f"Error reading {filename}: {e}")
time.sleep(interval) # Wait before next check
except Exception as e:
logging.error(f"An error occurred: {e}")
time.sleep(interval)
import glob #Import glob for file matching
if __name__ == "__main__":
log_patterns = ["*.log"] #Example: monitor all .log files
stream_log_files(log_patterns, interval=10, output_file="streamed_logs.txt")
Add your comment